Cakephp beforeFilter vs constructeur
Je suis nouveau sur cakephp. J'ai trouvé une grande partie utilisé la méthode
beforeFilter()
Ma question est, comment est-ce différent d'un constructeur de la classe?
Que faire si j'ai appelé
parent::beforeFilter();
de constructeur au lieu de beforeFilter();
Je veux juste savoir ce que si j'écris le même code dans
public function __construct() {
//Code here
}
au lieu de
public function beforeFilter() {
}
Grâce
OriginalL'auteur Dhinta | 2013-07-26
Vous devez vous connecter pour publier un commentaire.
construct() est pour la construction, à la charge des choses dont vous avez besoin.
http://api.cakephp.org/2.3/class-Component.html#___construct
beforeFilter() exécute les fonctions dont vous avez BESOIN pour être exécuté avant toute autre action
http://api.cakephp.org/2.3/class-Controller.html#_beforeFilter
http://book.cakephp.org/2.0/en/controllers.html#request-life-cycle-callbacks
Généralement vous n'aurez pas besoin d'un constructeur, car, en suivant les conventions de CakePHP il n'existe que très peu de scénarios où vous avez réellement n'avez pas d'autre option que de "forcer" le chargement de quelque chose à la main...
Dites-vous que vous êtes en désaccord avec la documentation de CakePHP? Ils disent que "c'est un endroit pratique pour vérifier pour une session ou les permissions d'un utilisateur." Vous pouvez vérifier les autorisations de la beforeFilted() la méthode et sur cette base, de déterminer ce que vous souhaitez afficher dans la vue, correct? Je ne suis pas sûr, si nous parlons de la même chose ou si vous faites référence à quelque chose d'autre.
Oui, je le fais. Cette phrase est un peu trompeur et doit pointer vers le composant Auth et c'est isAuthorized() de rappel. Ou encore de donner de meilleurs conseils sur où et comment mettre en œuvre les contrôles d'autorisation. Cependant, c'est une ancienne version et je suis trop paresseux pour mettre à jour la documentation. J'ai réécrit l'Authentification (github.com/cakephp/authentication) pour Cake3 à laquelle il sera dans la prochaine version, je suis dans la planification de la phase de la couche d'Autorisation pour plus tard 3.x release ou 4.0, qui disposent de beaucoup mieux l'abstraction et d'une politique basée sur la mise en œuvre. Les idées sont les bienvenues.
Intéressant. Il est vrai que la documentation à l'adresse book.cakephp.org/1.2/en/The-Manual/Developing-with-CakePHP/..., où il est dit que "beforeFilter() est un endroit pratique pour vérifier pour une session ou les permissions d'un utilisateur" est la documentation d'une ancienne version. Mais si vous allez à book.cakephp.org/3.0/en/controllers.html, il dit exactement la même chose, et la documentation est censé être plus récente parce que c'est pour CakePHP 3.0. Peut-être que c'est trop trompeuse.
OriginalL'auteur pudelhund
Il suffit de lire la description de la méthode dans la classe de Contrôleur:
BeforeFilter est appelé par le régulateur lorsqu'une URL est accessible et une action d'un contrôleur est déclenchée:
C'est rarement le cas (au moins je ne me souviens pas) dans lequel je devais faire quelque chose dans le constructeur. Aussi c'est une bonne conception architecturale. Le constructeur initialise juste des choses et le beforeFilter vous permet de configurer (pour la plupart des composants par exemple) ce qui a été initialisée avant.
OriginalL'auteur burzum
Vous pouvez trouver des définitions pertinentes de l'officiel de CakePHP documentation à https://book.cakephp.org/1.2/en/The-Manual/Developing-with-CakePHP/Controllers.html#the-app-controller:
OriginalL'auteur Jaime Montoya