什麼是鏈式操作呢?使用jquery的同學印象應該會很深刻.在jquery中,我們經常會這樣的來操作dom元素:
$("p").css("color").addclass("selected");
連貫操作看起來的確很酷,也非常的方便**的閱讀.那麼在php裡面是否可以實現呢?答案是肯定的,當然了必須是在oop中用才行,在過程化的程式中,就沒有必要用這種方法了。
在php中,我們經常要使用很多函式:
$str = 'abs123 ';
echo strlen(trim($str));
上面**的作用就是去除字串兩邊的空格,然後輸出其長度,那麼使用鏈式程式設計就可以這樣來:
$str = 'abs123 ';
echo $str->trim()->strlen();
是不是看著更加的舒服呢?這裡主要是利用了php物件導向裡面的 __call() 和 __tostring() 魔術方法
/*** 物件鏈式操作
* 2015-04-24
*/class basechainobject
function __tostring()
function __call($name,$args)catch(exception $e)
if (!$args) else
$this->_trace_data[$name] = $this->data;
return $this;}/
* 判斷方法是否存在
* @param string
*/private function vaild_func($fn)
}public function trace()
}class string extends basechain程式設計客棧object
$str = new string('ab rewqc ');
echo $str->trim()->strlen();
$str->trace();
從以上**可以看出,當呼叫物件中不存在的方法時,會自動觸發__call()魔術方法,然後結合call_user_func()來執行鏈式操作,當輸出物件的時候觸發tostring()來輸出想要的結果.當然還有乙個方案就是在自定義的方法中使用return this,也可以實現物件鏈式的操作,大家可以自己去試試看.
Php 鏈式執行,PHP實現鏈式操作的原理詳解
在乙個類中有多個方法,當你例項化這個類,並呼叫方法時只能乙個乙個呼叫,類似 db.php class db public function where code here public function order code here public function limit code here ...
PHP實現的連貫操作 鏈式操作例項
php中的連貫操作看起來的確很酷,也非常的方便 的閱讀,當然了必須是在oop中用才行,在過程化的程式中,就沒有必要用這種方法了。有實現這個方法的有用 call來實現的,而我下面寫的這個例子,則不是用 call的,大家可以擴充套件一下吧。下面寫的這個sql語句組合類,主要是用於學習的,如果有同學想拿去...
Php 鏈式執行,PHP實現鏈式操作的三種方法詳解
在php中有很多字串函式,例如要先過濾字串收尾的空格,再求出其長度,一般的寫法是 strlen trim str 如果要實現類似js中的鏈式操作,比如像下面這樣應該怎麼寫?str trim strlen 下面分別用三種方式來實現 方法一 使用魔法函式 call結合call user func來實現 ...