⊗ppMVDFmDs 29 of 35 menu

Ανάπτυξη ενός Dispatcher στο δικό σας MVC Framework

Ας θυμηθούμε το τρέχον περιεχόμενο του αρχείου index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // η υλοποίηση της αυτόματης φόρτωσης }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); ?>

Όπως βλέπετε, μέχρι στιγμής ο router μας επιστρέφει ένα αντικείμενο της κλάσης Track, που περιέχει το όνομα του controller, το όνομα της action και τις παραμέτρους από τη γραμμή διεύθυνσης. Επιπλέον, στο προηγούμενο μάθημα δημιουργήσαμε τον γονέα όλων των controllers.

Τώρα μπορούμε να κάνουμε έτσι ώστε να γίνεται κλήση της μεθόδου του controller, τα δεδομένα του οποίου περιέχονται στη μεταβλητή μας $track.

Αυτό θα το κάνει μια ειδική κλάση Dispatcher. Ο Dispatcher θα λαμβάνει το αντικείμενο της κλάσης Track και βάσει των δεδομένων του θα δημιουργεί ένα αντικείμενο της καθορισμένης κλάσης, θα καλεί τη μέθοδο αυτής της κλάσης, περνώντας σε αυτή τη μέθοδο τις παραμέτρους.

Ας προσθέσουμε την κλήση του Dispatcher στο αρχείο index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // η υλοποίηση της αυτόματης φόρτωσης }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); // Κλήση του Dispatcher: $page = ( new Dispatcher ) -> getPage($track); ?>

Η κλήση της μεθόδου getPage του Dispatcher μας θα καλεί τη μέθοδο render του controller και θα επιστρέφει ό,τι επέστρεψε η κλήση αυτής της μεθόδου. Όπως ήδη γνωρίζετε από το προηγούμενο μάθημα, η μέθοδος render του controller επιστρέφει ένα αντικείμενο της κλάσης Page.

Εδώ είναι το πρόχειρο της κλάσης μας Dispatcher:

<?php namespace Core; class Dispatcher { public function getPage(Track $track) { ...κώδικας return controller -> render(παράμετροι); } } ?>

Χρησιμοποιώντας το πρόχειρό μου, υλοποιήστε την περιγραφόμενη κλάση Dispatcher. Ελέγξτε τη λειτουργία της. Σε περίπτωση δυσκολίας, δείτε τον πηγαίο κώδικα στα αρχεία του εκπαιδευτικού framework που έφτιαξα.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη