Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP извиквания на множество обектни функции

това се нарича верижно свързване на методи и се извършва чрез връщане на препратка към класа ( $this ) или друг обект на клас от тези функции. След това можете да извикате метод на върнатия обект.

Ето един прост пример.

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

изход:

'hello'

Само за да обясня малко повече, горният код $a->bar('hello')->out(); е приблизително еквивалентно на това:

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

Сега, защото bar() връща $this можем да го присвоим на $b както по-горе и след това извикайте out() . Но $a и $b и двете препращат към един и същ екземпляр на foo обект, защото върнахме $this от bar() . Така че няма нужда от тази допълнителна "фалшива" променлива, тъй като можем просто да препращаме към връщащия обект директно за следващото извикване. Това работи с всеки обект, който се връща от метод (не само $this), но очевидно тогава следващото извикване във веригата е срещу върнатия обект.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Премахнете първичния ключ в MySQL

  2. MySQL присъединява много към много единичен ред

  3. Разлики между DATA INFILE и LOAD DATA LOCAL INFILE

  4. Свързване на MySQL към Visual Studio C#

  5. MySql.Data.MySqlClient.Replication.ReplicationManager хвърля System.TypeInitializationException