Mysql
 sql >> Database >  >> RDS >> Mysql

Chiamate di funzioni a più oggetti PHP

questo è chiamato concatenamento di metodi e viene fatto restituendo un riferimento alla classe( $this) o un altro oggetto di classe da quelle funzioni. Quindi puoi chiamare un metodo sull'oggetto restituito.

Ecco un semplice esempio.

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

uscita:

'hello'

Giusto per spiegare un po' di più, il codice sopra $a->bar('hello')->out(); è più o meno equivalente a fare questo:

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

Ora perché bar() restituisce $this potremmo assegnarlo a $b come sopra e quindi chiama out() . Ma $a e $b entrambi fanno riferimento alla stessa istanza di foo oggetto, perché abbiamo restituito $this da bar() . Quindi non c'è bisogno di questa variabile "spura" aggiuntiva in quanto possiamo semplicemente fare riferimento all'oggetto restituito direttamente per la chiamata successiva. Funziona con qualsiasi oggetto restituito da un metodo (non solo $this), ma ovviamente la prossima chiamata nella catena è contro l'oggetto restituito.