⊗ppMVDFmCn 28 of 35 menu

Controladores em seu próprio framework MVC em PHP

Como você já sabe, todos os controladores do nosso framework possuem o método render, que precisa ser chamado para enviar dados para a view. Este método é herdado pelos nossos controladores personalizados da classe pai Controller, localizada no núcleo. Vamos criar esta classe:

<?php namespace Core; class Controller { protected function render($view, $data) { } } ?>

Como você vê, o método render recebe como parâmetro o nome da view e os dados para exibição. Deixe este método retornar um objeto de uma classe especial Page, na qual estará contida a informação sobre a view da ação do controlador. Nesta classe estarão contidos o nome da view, os dados, bem como o título da página e o nome do arquivo de layout do site:

<?php namespace Core; class Page { private $layout; private $title; private $view; private $data; public function __construct($layout, $title, $view, $data) { $this->layout = $layout; $this->title = $title; $this->view = $view; $this->data = $data; } public function __get($property) { return $this->$property; } } ?>

Então o código do nosso método render ficará assim:

<?php namespace Core; class Controller { protected $layout = 'default'; protected function render($view, $data) { return new Page($this->layout, $this->title, $view, $data); } } ?>

Vou explicar o que está acontecendo aqui. O nome da view e os dados chegam como parâmetros do método. No entanto, no controlador personalizado também é definido o título da página - através da atribuição da propriedade title. Portanto, em $this->title estarão contidos o título que passaremos ao construtor da classe Page.

Há também nuances com o layout. Como você sabe, nosso framework usa o layout do arquivo default.php. Na verdade, cada ação pode ter um layout diferente. Para isso, é necessário na própria ação, na propriedade layout, atribuir um outro nome de layout.

Como isso é alcançado: nosso controlador pai tem a propriedade layout, por padrão com o valor 'default.php'. Este será o layout padrão. No entanto, se a ação do controlador personalizado sobrescrever o valor da propriedade layout, então o layout será outro.

Copie o código da minha classe Controller e coloque-o no arquivo /core/Controller.php.

Copie o código da minha classe Page e coloque-o no arquivo /core/Page.php.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar