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

PHP multiple object funktionskald

dette kaldes metodekæde og gøres ved at returnere en reference til klassen( $this ), eller et andet klasseobjekt fra disse funktioner. Så kan du kalde en metode på det returnerede objekt.

Her er et simpelt eksempel.

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

output:

'hello'

Bare for at forklare lidt mere, ovenstående kode $a->bar('hello')->out(); svarer nogenlunde til at gøre dette:

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

Nu fordi bar() returnerer $this vi kunne tildele den til $b som ovenfor og kald derefter out() . Men $a og $b begge refererer til den samme forekomst af foo objekt, fordi vi returnerede $this fra bar() . Så der er ikke behov for denne ekstra "uægte" variabel, da vi bare kan referere returobjektet direkte til det næste kald. Dette virker med ethvert objekt, der returneres fra en metode (ikke kun $this), men selvfølgelig er det næste kald i kæden mod det returnerede objekt.




  1. Hvordan virker SQL-injection, og hvordan beskytter jeg mig imod det

  2. Frigør fordelene ved MariaDBs Certified Associate Program

  3. Hvordan genererer man automatisk migreringer med Sequelize CLI fra Sequelize-modeller?

  4. Få mest muligt ud af dine PostgreSQL-indekser