Et bien non...
Mais tu viens de me dire qu'on allait faire un contrôleur de base?
Oui, mais ce n'est pas notre premier contrôleur. C'est un contrôleur générique, qui possédera des propriétés et méthodes de base qui seront utiles pour tout nos contrôleurs par la suite.
Ah on va utiliser l'héritage
Tout à fait, dans un premier temps, on va réfléchir à ce qui pourrait nous être utile dans tous nos contrôleur. Rappelle moi à quoi sert à contrôleur?
A contrôler l'application !
Oui, mais tu pourrais me donner un peu plus de détails sur ce qu'il va faire généralement?
Si je me souviens bien, il va appeler des modèles pour récupérer des données, et ensuite les envoyer à une vue?
Oui, et de quoi peut avoir besoin une vue pour s'afficher correctement?
De paramètres?
Effectivement des paramètres peuvent être utile, et un nom est indispensable ! Commence donc par créer une classe BaseController, prévois une propriété param et deux méthodes :
- View : pour affichier une vue, attention à bien penser aux paramètres à lui passer !
- bindManager : pour gérer les manager d'accès aux données que le contrôleur pourra utiliser.
Mais on a pas déjà les param dans notre HttpRequest?
Si, et d'ailleurs ça peut être utile de les récupérer dans le contrôleur. Voir même de récupérer notre HttpRequest complète, ça pourra servir. Mais pour répondre à ta question, tous les paramètres que nous avons binder dans HttpRequest ne seront pas nécessairement utile à la vue, certain ne seront peut être nécessaire que pour le contrôleur.
Ok je vais faire ça, et si j'ai bien compris j'ajoute aussi une propriété HttpRequest et je la passe en paramètre du constructeur
Tu as tout compris.
{"language":"application/x-httpd-php","content":"<?php\n\tclass BaseController\n\t{\n\t\tprivate $_httpRequest;\n\t\tprivate $_param;\n\t\t\n\t\tpublic function __construct($httpRequest)\n\t\t{\n\t\t\t$this->_httpRequest = $httpRequest;\n\t\t}\n\t\t\n\t\tpublic function view($filename, $param)\n\t\t{\n\t\t\t\n\t\t}\n\t\t\n\t\tpublic function bindManager()\n\t\t{\n\t\t\t\n\t\t}\n\t}","filename":"BaseController.php"}
C'est presque ça, en fait on va se servir de la variable param du baseController pour envoyer ces param à la vue, et étant donné que la vue est une méthode du baseController, tu n'as pas besoin de lui passer en paramètre, il seront déjà accessible dans la méthode avec $this->_param
Ah oui, je n'y avais pas pensé
{"language":"application/x-httpd-php","content":"<?php\n\tclass BaseController\n\t{\n\t\tprivate $_httpRequest;\n\t\tprivate $_param;\n\t\t\n\t\tpublic function __construct($httpRequest)\n\t\t{\n\t\t\t$this->_httpRequest = $httpRequest;\n\t\t}\n\t\t\n\t\tpublic function view($filename)\n\t\t{\n\t\t\t\n\t\t}\n\t\t\n\t\tpublic function bindManager()\n\t\t{\n\t\t\t\n\t\t}\n\t}","filename":"BaseController.php"}
Et maintenant je fais quoi?
Tu veux commencer par quelle méthode, view ou bindManager?
View d'abord, je ne comprend pas du tout bindManager pour le moment, on verra après. J'ai terminé cette partie