⊗ppMVDFmCn 28 of 35 menu

Contrôleurs dans votre propre framework MVC en PHP

Comme vous le savez déjà, tous les contrôleurs de notre framework ont une méthode render, qui doit être appelée pour envoyer les données à la vue. Cette méthode est héritée par nos contrôleurs utilisateurs de la classe parente Controller, située dans le noyau. Créons cette classe :

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

Comme vous le voyez, la méthode render accepte en paramètre le nom de la vue et les données à afficher. Supposons que cette méthode retourne un objet d'une classe spéciale Page, dans laquelle seront contenues les informations sur la représentation des données de l'action du contrôleur. Cette classe contiendra le nom de la vue, les données, ainsi que le titre de la page et le nom du fichier de mise en page du 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; } } ?>

Alors le code de notre méthode render ressemblera à ceci :

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

Je vais expliquer ce qui se passe ici. Le nom de la vue et les données arrivent en paramètres de la méthode. Cependant, le titre de la page est également défini dans le contrôleur utilisateur - en écrivant la propriété title. Cela signifie que $this->title contiendra le titre que nous transmettrons au constructeur de la classe Page.

Il y a aussi des nuances concernant le layout. Comme vous le savez, notre framework utilise un layout provenant du fichier default.php. En réalité, chaque action peut avoir un layout différent. Pour cela, il faut que l'action elle-même écrive un autre nom de layout dans la propriété layout.

Comment cela est réalisé : notre contrôleur parent a une propriété layout, ayant par défaut la valeur 'default.php'. Ceci sera le layout par défaut. Cependant, si l'action du contrôleur utilisateur redéfinit la valeur de la propriété layout, alors le layout sera différent.

Copiez le code de ma classe Controller et placez-le dans le fichier /core/Controller.php.

Copiez le code de ma classe Page et placez-le dans le fichier /core/Page.php.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser