sql >> Databasteknik >  >> RDS >> Mysql

PHP flera objekt funktionsanrop

detta kallas metodkedja och görs genom att returnera en referens till klassen( $this ), eller ett annat klassobjekt från dessa funktioner. Sedan kan du anropa en metod på det returnerade objektet.

Här är ett enkelt exempel.

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

utdata:

'hello'

Bara för att förklara lite mer, ovanstående kod $a->bar('hello')->out(); är ungefär lika med att göra detta:

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

Nu eftersom bar() returnerar $this vi skulle kunna tilldela den till $b som ovan och anropa sedan out() . Men $a och $b båda refererar till samma instans av foo objekt, eftersom vi returnerade $this från bar() . Så det finns inget behov av denna extra "falska" variabel eftersom vi bara kan referera returobjektet direkt för nästa anrop. Detta fungerar med alla objekt som returneras från en metod (inte bara $this), men uppenbarligen är nästa anrop i kedjan mot det returnerade objektet.




  1. 3 sätt att få schemat för en resultatuppsättning i SQL Server

  2. Autorunning Query i mysql

  3. SQLiteDatabase android IllegalStateException

  4. Fatalt fel:Anrop till odefinierad funktion mysql_connect()