⊗ppMVDFmDs 29 of 35 menu

Sviluppo del Dispatcher nel proprio framework MVC

Ricordiamo il contenuto attuale del file index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // la tua implementazione dell'autocaricamento }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); ?>

Come puoi vedere, per ora il nostro router restituisce un oggetto della classe Track, contenente il nome del controller, il nome dell'azione e i parametri della stringa dell'URL. Inoltre, nella lezione precedente abbiamo creato il genitore di tutti i controller.

Ora possiamo fare in modo che venga effettuata la chiamata al metodo del controller, i cui dati sono contenuti nella nostra variabile $track.

Questo compito spetterà a una classe speciale Dispatcher. Il dispatcher riceverà un oggetto della classe Track e in base ai suoi dati creerà un oggetto della classe indicata, chiamerà il metodo di questa classe, passando a questo metodo i parametri.

Aggiungiamo la chiamata al dispatcher nel file index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // la tua implementazione dell'autocaricamento }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); // Chiamata del dispatcher: $page = ( new Dispatcher ) -> getPage($track); ?>

La chiamata al metodo getPage del nostro dispatcher chiamerà il metodo render del controller e restituirà ciò che è stato restituito dalla chiamata di questo metodo. Come già sai dalla lezione precedente, il metodo render del controller restituisce un oggetto della classe Page.

Ecco la bozza della nostra classe Dispatcher:

<?php namespace Core; class Dispatcher { public function getPage(Track $track) { ...codice return controller -> render(parametri); } } ?>

Utilizzando la mia bozza, implementa la classe Dispatcher come descritto. Verifica il suo funzionamento. In caso di difficoltà, guarda il codice sorgente nei file del mio framework didattico realizzato.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta