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