CodeIgniter連貫操作的底層原理分析

字號:


    本文分析了CodeIgniter連貫操作的底層原理。分享給大家供大家參考,具體如下:
    php oop連貫操作原理
    ->符號其實是傳遞對象指針的?;蛟S這么說是不對的。
    但是,我們可以這么的理解。
    不多說。放代碼。
    普通用法:
    <?php
    class test
    {
     public $a='';
     public $b='';
     public function actiona() {
      $this->a="hello";
      return $this;
     }
     public function actionb() {
      $this->b="world";
      return $this;
     }
     public function actionc() {
      echo $this->a." ".$this->b;
     }
    }
    $oktest=new test();
    $oktest->actiona();
    $oktest->actionb();
    $oktest->actionc();
    ?>
    連貫用法:
    <?php
    class test
    {
     public $a='';
     public $b='';
     public function actiona() {
      $this->a="hello";
      return $this;
     }
     public function actionb() {
      $this->b="world";
      return $this;
     }
     public function actionc() {
      echo $this->a." ".$this->b;
     }
    }
    $oktest=new test();
    $oktest->actiona()->actionb()->actionc();
    ?>
    看到了沒有。
    連起來了。可以把操作串起來。
    看起來直觀多了。閱讀代碼時也輕松了很多。
    類里面操作都返回了一個指針。
    $this.
    他等價于你初始化的那個對象 $oktest
    所以下面的操作可以連續(xù)起來。
    試著去掉每個操作里的
    return $this
    你將會看到錯誤提示。
    例子:
    <?php
    class sql{
     public $select;
     public $from;
     public $where;
     public $order;
     public $limit;
     public function from($_from='FROM test') {
     $this->from=$_from;
     return $this;
     }
     public function where($_where='WHERE 1=1') {
     $this->where=$_where;
     return $this;
     }
     public function order($_order='ORDER BY id DESC') {
     $this->order=$_order;
     return $this;
     }
     public function limit($_limit='LIMIT 0,30') {
     $this->limit=$_limit;
     return $this;
     }
     public function select($_select='SELECT *') {
     $this->select=$_select;
     return $this->select." ".$this->from." ".$this->where." ".$this->order." ".$this->limit;
     }
    }
    $sql =new sql();
    echo $sql->from()->where()->order()->limit()->select();
    ?>
    希望本文所述對大家基于CodeIgniter框架的PHP程序設計有所幫助。