Mysql
 sql >> Base de données >  >> RDS >> Mysql

Appels de fonctions PHP à plusieurs objets

cela s'appelle le chaînage de méthodes et se fait en renvoyant une référence à la classe ( $this ) ou à un autre objet de classe à partir de ces fonctions. Ensuite, vous pouvez appeler une méthode sur l'objet renvoyé.

Voici un exemple simple.

class foo{
     protected $_bar;

     public function bar($value){
          $this->_bar = $value;
          return $this;
    }


   public function out(){
        echo $this->_bar;
   }
}

$a = new foo();
$a->bar('hello')->out();

sortie :

'hello'

Juste pour expliquer un peu plus, le code ci-dessus $a->bar('hello')->out(); est à peu près équivalent à faire ceci :

 $a = new foo();
 $b = $a->bar('hello');  //$a and $b are the same instance of the object
 $b->out();

Maintenant parce que bar() renvoie $this nous pourrions l'attribuer à $b comme ci-dessus, puis appelez out() . Mais $a et $b les deux font référence à la même instance de foo objet, car nous avons renvoyé $this de bar() . Il n'y a donc pas besoin de cette variable "fausse" supplémentaire car nous pouvons simplement référencer l'objet de retour directement pour le prochain appel. Cela fonctionne avec n'importe quel objet renvoyé par une méthode (pas seulement $this), mais évidemment, le prochain appel dans la chaîne est contre l'objet renvoyé.