⊗ppMVDFmDs 29 of 35 menu

Ontwikkeling van een dispatcher in je eigen MVC-framework

Laten we de huidige inhoud van het bestand index.php herinneren:

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

Zoals je ziet, geeft onze router voorlopig een object van de klasse Track terug, dat de naam van de controller, de naam van de action en de parameters uit de adresbalk bevat. Bovendien hebben we in de vorige les een ouder voor alle controllers gemaakt.

Nu kunnen we ervoor zorgen dat de methode van de controller wordt aangeroepen, waarvan de gegevens zijn opgeslagen in onze variabele $track.

Dit wordt gedaan door een speciale klasse Dispatcher. De dispatcher krijgt een object van de klasse Track en creëert op basis van de gegevens daarvan een object van de opgegeven klasse, roept de methode van deze klasse aan, en geeft de parameters door aan deze methode.

Laten we de aanroep van de dispatcher toevoegen aan het bestand index.php:

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

De aanroep van de methode getPage van onze dispatcher zal de methode render van de controller aanroepen en teruggeven wat de aanroep van deze methode retourneert. Zoals je al weet uit de vorige les, retourneert de methode render van de controller een object van de klasse Page.

Hier is de basisopzet van onze klasse Dispatcher:

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

Implementeer de beschreven klasse Dispatcher met behulp van mijn basisopzet. Test de werking ervan. Raadpleeg bij problemen de broncode in de bestanden van het door mij gemaakte educatieve framework.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren