Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Então galera recorrendo mais uma vez a vocês estou com um pequeno problema. Estou utilizando o composer para fazer o autoloading, o padrão utilizado é o MVC, porem criei um pequeno sistema de templates se é que posso dizer isso. Trabalham da seguinte forma:
Toda requisição é enviada ao Index. que instancia a classe de um arquivo "Init.php" esse arquivo trata as rotas que eu acesso exemplo.
site.com/area/clientes
O index.php esta em clientes logo quando acesso a url citada, ele instancia a classe Init e passa a rota explodindo a url em arrays, e monta a classe a ser instanciada.
Algo como:
$class = "\\AppMaisMel\\Controllers\\{$urlExplode[1]}\\{$urlExplode[1]}";
new $class($urlExplode[1],$urlExplode[2]);
Isso acima fara com que chame o controller da rota acessada, nesse controller terá o __construct que acessará dados do model e chamara o arquivo defaultTemplate.phtml, nesse arquivo eu incluo a view, que também é acessada mais ou menos como acima. só que dentro desse defaultTemplate.phtml ele faz um require_once na view só que os dados passados no controller acabam não sendo acessados na view.
pastas:
template
|- defaultTemplate.phtml
app
|- Models
|- clientes
|- clientes.php
|- Controllers
|- clientes
|- clientes.php
|- list.php
|- Views
|- clientes
|- clientes.php
|- Init
|- init.php
pubilc_html
|- clientes
|- index.php
Até onde estudei a "view" que penso como próprio nome já diz, consiste em exibir informações. até agora no que estudei de MVC tenho que Model acessa dados, o controller faz a intermediação no que o model fornece e o que a view acessa, sendo assim minhas views consistem basicamente apenas em exibição de dados.
minhas views consistem basicamente apenas em exibição de dados.
Você disse ter um "defaultTemplate.phtml" que inclui um view, isso não faz sentido, "defaultTemplate.phtml" por si só já é uma view.
Se sua 'view" está precisando incluir coisas é por que não está usando MVC, tudo que sua "view" precisa deve ser decidido anteriormente pelo controller, ela apenas vai exibir e não faz nada mais que isso, ela jamais vai cuidar de lógica e qualquer outra regra.
Todo dado que uma view precisar, deve ser passada para ela e não ela resgatar esses dados.
Imagine seu celular e quando você faz uma ligação para sua namorada.
O telefone é a "model", ele vai cuidar das regras da ligação, a oi, vivo, claro é o "controller", são eles quem vão decidir o que sua namorada vai ouvir e ela é a "view", ela não faz nada a não ser ouvir você e receber suas informações.
Você pensa que "view" é o que?
Existe um esquema MVC que consiste em mesclar a "view" com o "controller" e encapsular corretamente o controller para que a view acesse apenas o que lhe convém.
Você pode criar um esquema de setVar(String name, mixed $content) e armazenar essas variáveis em um array e na hora de carregar um template, basta extraí-las.
<?php
Abstract class AbstractGlobalController
{
class ShowHelloWorld extends AbstractGlobalController()
{
// hello_word.php
echo $hello . " " . $world;
Esse código que escrevi acima não foi testado, por tanto, é apenas um exemplo.