Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
J'essaye de comprendre comment est lancé le bootstrap.
Jusqu'à maintenant j'ai l'habitude d'utiliser les flèches pour faire appel aux méthodes de mes classes, par contre je ne savais pas qu'on pouvais faire un appel 2 fois à la suite (ex : $maclasse->methode1()->methode2(); ) comme on peu le voir sur zf.
D'où ma question, comment est-ce que cela fonctionne ? Avez-vous des sources pour comprendre ou un mot clé pour trouver la doc sur le net ?
Merci beaucoup pour tout aide.
Ps : Voici un code que j'ai fait pour ne pas partir dans les détails et pour comprendre le fonctionnement, mais qui ne marche pas évidemment :
<?php class Maclasse{ public function bootstrap(){ echo 'hello'; } public function run(){ echo 'world'; } } $c = new Maclasse(); $c->bootstrap()->run();
Résultat : Fatal error: Call to a member function run() on a non-object in /path/file.php on line 17
Hors ligne
il faut que tu retourne $this dans les methodes que tu souhaites chainées
<?php class Maclasse{ public function bootstrap(){ echo 'hello'; return $this; } public function run(){ echo 'world'; return $this; } } $c = new Maclasse(); $c->bootstrap()->run(); // affichera helloworld (parce que tu n'as pas mis d'espace entre les 2 mots ^^
Hors ligne
C'était donc aussi simple.. en tous cas ça marche, merci beaucoup ! ^^
Hors ligne
il suffit que la méthode retourne un objet pour qu'on puisse appeler une méthode
class Toto { function test() { return new Titi(); } } class Titi { function foo() { return new Toto(); } function bar() { return $this; } } $obj = new Toto(); $obj->test()->foo()->test()->bar()->bar()->foo()->test();
c'est le principe que j'ai utilisé ICI
http://www.z-f.fr/forum/viewtopic.php?id=765
A+JYT
Hors ligne
Une méthode = Retour d'un objet
Une fonction = Exécution d'un code
Hors ligne
Hello,
Wikipédia utilise le terme "désignation chaînée" : http://fr.wikipedia.org/wiki/D%C3%A9sig … AEn%C3%A9e
Je suis plus habitué à la traduction de l'anglais "interface fluide" (http://en.wikipedia.org/wiki/Fluent_interface)
@+
Hors ligne
probitaille a écrit:
Une méthode = Retour d'un objet
Une fonction = Exécution d'un code
HOU la non de non
une méthode est un membre d'un objet ou d'un classe
alors qu'une fonction n'est rattaché à rien
class toto { //methode qui ne retourne rien function mReturnVoid() { return; } //methode qui retourne un scalaire function mReturnScalar() return 15; } //methode qui retourne un objet function mReturnObject() { return new stdClass(); } } //fonction qui ne retourne rien function fReturnVoid() { return; } //fonction qui retourne un scalaire function fReturnScalar() return 15; } //fonction qui retourne un objet function fReturnObject() { return new stdClass(); }
la signature (c.a.d. les type de retours des argument et le nom) n'ont absolument rien à voir avec le fait qu'une définition est une fonction ou une methode
PHP utilise pour les deux le mot clef function car seul le fait d'être ou non dans une classe les différencies
si je reprends l'exemple ci-dessus et que j'ajoute
fonction returnObject() { return new Toto(); }
alors à partir de ma fonction je peux enchainer les ->
returnObject()->test()->foo()->test()->bar()->bar()->foo()->test();
A+JYT
Hors ligne
Merci à tous pour vos réponses, ça fait plaisir de voir un forum aussi actif et pertinent.
Hors ligne
Pages: 1