Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP-Mehrfachobjekt-Funktionsaufrufe

Dies wird als Methodenverkettung bezeichnet und erfolgt durch Zurückgeben einer Referenz auf die Klasse ( $this ) oder ein anderes Klassenobjekt von diesen Funktionen. Dann können Sie eine Methode für das zurückgegebene Objekt aufrufen.

Hier ist ein einfaches Beispiel.

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();

Ausgabe:

'hello'

Nur um ein bisschen mehr zu erklären, der obige Code $a->bar('hello')->out(); ist ungefähr gleichbedeutend damit:

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

Jetzt weil bar() gibt $this zurück wir könnten es $b zuweisen wie oben und rufen Sie dann out() auf . Aber $a und $b beide verweisen auf dieselbe Instanz von foo Objekt, weil wir $this zurückgegeben haben von bar() . Es besteht also keine Notwendigkeit für diese zusätzliche "falsche" Variable, da wir für den nächsten Aufruf einfach direkt auf das Rückgabeobjekt verweisen können. Dies funktioniert mit jedem Objekt, das von einer Methode zurückgegeben wird (nicht nur mit $this), aber offensichtlich erfolgt der nächste Aufruf in der Kette dann gegen das zurückgegebene Objekt.