像thinkPHP的PHP開發架構都會封裝資料庫的操作類,會出現方法調用方法的情況,如下代碼:
M('Test')->where(['status'=>1])->field('id,name')->select();
這種實現方式是什麼思想呢,有沒有對應的具體技術名詞呢?
回複內容:
像thinkPHP的PHP開發架構都會封裝資料庫的操作類,會出現方法調用方法的情況,如下代碼:
M('Test')->where(['status'=>1])->field('id,name')->select();
這種實現方式是什麼思想呢,有沒有對應的具體技術名詞呢?
鏈式調用, 通過返回$this實現.
寫個demo給你:
*/class Calc{ /** * 結果 * @var integer */ protected $result = 0; /** * 加法 * @param number $value */ public function add($value) { $this->result += $value; return $this; } /** * 減法 * @param number $value */ public function sub($value) { $this->result -= $value; return $this; } /** * 返回結果 * @return [type] [description] */ public function result() { return $this->result; }}$calc = new Calc;echo $calc ->add(1) ->add(2) ->sub(1) ->add(11) ->result();
重點就是每個方法的return $this;
MVC模型的原理可以去瞭解一下。
然後再去看下關於類的封裝。
M('Test')其實相當於定義了一個 TestModel 的類.
M('Test')->where(),則是調用該類裡面的where方法。
主要的痛點還是在於對MVC模型的實現吧。
這個是關於MVC模型實現的一個教程,可以去看一下。
https://www.shiyanlou.com/cou...
鏈式調用,返回$this就ok了,你可以參考下各種ORM架構
鏈式操作麼,每次返回的是一個對象
鏈式操作,返回$this,方法的調用
鏈式操作
return $this;
樓上的都說的對。我補個串連把。
http://blog.csdn.net/zhengwish/article/details/51742880
鏈式調用 每次都返回對象