⊗ppMVDFmCn 28 of 35 menu

Ελεγκτές στο δικό μας MVC framework σε PHP

Όπως ήδη γνωρίζετε, όλοι οι ελεγκτές του framework μας έχουν τη μέθοδο render, η οποία πρέπει να καλείται για την αποστολή δεδομένων στην προβολή. Αυτή η μέθοδος, οι δικοί μας, προσαρμοσμένοι ελεγκτές την κληρονομούν από την γονική κλάση Controller, που βρίσκεται στον πυρήνα. Ας φτιάξουμε αυτή την κλάση:

<?php namespace Core; class Controller { protected function render($view, $data) { } } ?>

Όπως βλέπετε, η μέθοδος render δέχεται ως παράμετρο το όνομα της προβολής και τα δεδομένα για την εμφάνιση. Ας κάνουμε αυτή τη μέθοδο να επιστρέφει ένα αντικείμενο μιας ειδικής κλάσης Page, στην οποία θα περιέχονται πληροφορίες σχετικά με την προβολή δεδομένων της δράσης του ελεγκτή. Σε αυτή την κλάση θα περιέχεται το όνομα της προβολής, τα δεδομένα, καθώς και ο τίτλος (title) της σελίδας και το όνομα του αρχείου με τη διάταξη (layout) του site:

<?php namespace Core; class Page { private $layout; private $title; private $view; private $data; public function __construct($layout, $title, $view, $data) { $this->layout = $layout; $this->title = $title; $this->view = $view; $this->data = $data; } public function __get($property) { return $this->$property; } } ?>

Τότε ο κώδικας της μεθόδου render θα μοιάζει κάπως έτσι:

<?php namespace Core; class Controller { protected $layout = 'default'; protected function render($view, $data) { return new Page($this->layout, $this->title, $view, $data); } } ?>

Ας εξηγήσω τι συμβαίνει εδώ. Το όνομα της προβολής και τα δεδομένα έρχονται ως παράμετροι της μεθόδου. Ωστόσο, στον προσαρμοσμένο ελεγκτή ορίζεται επίσης και ο τίτλος (title) της σελίδας - μέσω της εγγραφής της ιδιότητας title. Αυτό σημαίνει ότι στο $this->title θα περιέχεται ο τίτλος, τον οποίο θα περάσουμε στον κατασκευαστή (constructor) της κλάσης Page.

Υπάρχουν επίσης αποχρώσεις με το layout. Όπως γνωρίζετε, το framework μας χρησιμοποιεί layout από το αρχείο default.php. Στην πραγματικότητα, κάθε δράση μπορεί να έχει και διαφορετικό layout. Για να γίνει αυτό, χρειάζεται στην ίδια τη δράση, στην ιδιότητα layout να γραφεί ένα διαφορετικό όνομα layout.

Πώς επιτυγχάνεται αυτό: ο γονικός ελεγκτής μας έχει την ιδιότητα layout, η οποία από προεπιλογή έχει την τιμή 'default.php'. Αυτό θα είναι το layout από προεπιλογή. Ωστόσο, εάν η δράση του προσαρμοσμένου ελεγκτή επαναορίσει την τιμή της ιδιότητας layout, τότε και το layout θα είναι διαφορετικό.

Αντιγράψτε τον κώδικα της κλάσης Controller και τοποθετήστε τον στο αρχείο /core/Controller.php.

Αντιγράψτε τον κώδικα της κλάσης Page και τοποθετήστε τον στο αρχείο /core/Page.php.

Ελληνικά
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 για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη