sql >> Database >  >> RDS >> Mysql

PHP meerdere object functie-aanroepen

dit wordt method chaining genoemd en wordt gedaan door een verwijzing naar de klasse( $this ) of een ander klasseobject van die functies te retourneren. Dan kun je een methode aanroepen op het geretourneerde object.

Hier is een eenvoudig voorbeeld.

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

uitgang:

'hello'

Om wat meer uit te leggen, de bovenstaande code $a->bar('hello')->out(); komt ongeveer overeen met dit:

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

Nu omdat bar() retourneert $this we kunnen het toewijzen aan $b zoals hierboven en roep dan out() . aan . Maar $a en $b beide verwijzen naar hetzelfde exemplaar van de foo object, omdat we $this . hebben geretourneerd van bar() . Er is dus geen behoefte aan deze extra "onechte" variabele, omdat we gewoon rechtstreeks naar het return-object kunnen verwijzen voor de volgende aanroep. Dit werkt met elk object dat wordt geretourneerd door een methode (niet alleen $this), maar uiteraard is de volgende aanroep in de keten tegen het geretourneerde object.




  1. Hoe sorteer ik de resultaten op tijdstempel behalve één ervan?

  2. GROUP_CONCAT() aantal rijen bij groeperen op een tekstveld

  3. Oracle:als tabel bestaat

  4. ActionScript Date-object maken van MySQL UTC-tijdstempeltekenreeks