⊗ppMVDFmDs 29 of 35 menu

Entwicklung eines Dispatchers in Ihrem eigenen MVC-Framework

Erinnern wir uns an den aktuellen Inhalt der Datei index.php:

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

Wie Sie sehen können, gibt unser Router vorläufig ein Objekt der Klasse Track zurück, das den Namen des Controllers, den Namen der Action und die Parameter aus der Adresszeile enthält. Darüber hinaus haben wir in der vorherigen Lektion einen Eltern-Controller für alle Controller erstellt.

Nun können wir es so einrichten, dass der Aufruf der Controller-Methode, deren Daten in unserer Variable $track enthalten sind, stattfindet.

Dafür wird eine spezielle Klasse Dispatcher zuständig sein. Der Dispatcher erhält ein Objekt der Klasse Track und erstellt basierend auf seinen Daten ein Objekt der angegebenen Klasse, ruft die Methode dieser Klasse auf und übergibt der Methode die Parameter.

Fügen wir den Aufruf des Dispatchers in die Datei index.php hinzu:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // Ihre Autoload-Implementierung }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); // Aufruf des Dispatchers: $page = ( new Dispatcher ) -> getPage($track); ?>

Der Aufruf der Methode getPage unseres Dispatchers wird die Methode render des Controllers aufrufen und das zurückgeben, was der Aufruf dieser Methode zurückgibt. Wie Sie bereits aus der vorherigen Lektion wissen, gibt die Methode render des Controllers ein Objekt der Klasse Page zurück.

Hier ist der Entwurf unserer Klasse Dispatcher:

<?php namespace Core; class Dispatcher { public function getPage(Track $track) { ...Code return Controller -> render(Parameter); } } ?>

Implementieren Sie die beschriebene Klasse Dispatcher unter Verwendung meines Entwurfs. Überprüfen Sie ihre Funktion. Bei Schwierigkeiten sehen Sie sich den Quellcode in den Dateien meines erstellten Lern-Frameworks an.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen