⊗ppMVDFmDs 29 of 35 menu

Desenvolvimento do Dispatcher no seu próprio framework MVC

Vamos lembrar o conteúdo atual do arquivo index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // sua implementação de autoload }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); ?>

Como você pode ver, atualmente nosso roteador retorna um objeto da classe Track, contendo o nome do controlador, o nome da ação e os parâmetros da URL. Além disso, na lição anterior fizemos o pai de todos os controladores.

Agora podemos fazer com que ocorra a chamada do método do controlador, cujos dados estão contidos em nossa variável $track.

Isso será feito por uma classe especial Dispatcher. O dispatcher receberá um objeto da classe Track e com base em seus dados criará um objeto da classe especificada, chamará o método dessa classe, passando para esse método os parâmetros.

Vamos adicionar a chamada do dispatcher no arquivo index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // sua implementação de autoload }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); // Chamada do dispatcher: $page = ( new Dispatcher ) -> getPage($track); ?>

A chamada do método getPage do nosso dispatcher chamará o método render do controlador e retornará o que a chamada desse método retornou. Como você já sabe da lição anterior, o método render do controlador retorna um objeto da classe Page.

Aqui está o esboço da nossa classe Dispatcher:

<?php namespace Core; class Dispatcher { public function getPage(Track $track) { ...código return controlador -> render(parâmetros); } } ?>

Usando meu esboço, implemente a classe Dispatcher descrita. Verifique seu funcionamento. Em caso de dificuldades, consulte o código-fonte nos arquivos do framework educacional que fiz.

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