⊗ppMVDFmDs 29 of 35 menu

Dezvoltarea unui dispatcher în propriul framework MVC

Să ne amintim conținutul actual al fișierului index.php:

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

După cum vedeți, momentan routerul nostru returnează un obiect al clasei Track, care conține numele controllerului, numele acțiunii și parametrii din linia de adresă. În plus, în lecția precedentă am creat părintele tuturor controllerelor.

Acum putem face ca metoda controllerului să fie apelată, datele care sunt conținute în variabila noastră $track.

Aceasta va fi gestionată de o clasă specială Dispatcher. Dispatcher-ul va primi obiectul clasei Track și conform datelor sale va crea un obiect al clasei specificate, va apela metoda acestei clase, transmitând în această metodă parametrii.

Să adăugăm apelul dispatcher-ului în fișierul index.php:

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

Apelul metodei getPage a dispatcher-ului nostru va apela metoda render a controllerului și va returna ceea ce returnează apelul acestei metode. După cum știți deja din lecția precedentă, metoda render a controllerului returnează un obiect al clasei Page.

Iată schița clasei noastre Dispatcher:

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

Folosind schița mea, implementați clasa descrisă Dispatcher. Verificați funcționarea acesteia. În caz de dificultăți, consultați codul sursă din fișierele framework-ului meu educațional realizat.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge