鏈式程式設計使用起來非常愜意,本文嘗試在php下實現一種鏈式程式設計的應用
我們知道在new class後呼叫method,在常規php程式設計下每次呼叫都要
php**
$instance->method1();
$instance->method1();
$instance->method1();
$instance->method1();
這樣無盡的寫n多,如果中間有錯誤判斷那就成這樣了
php**
if($instance->method1())
if($instance->method2())
$instance->method3();
//or
$instance->method1();
if($instance->haserror()) die(error);
$instance->method2();
if(....) ...;
if($instance->method1())
if($instance->method2())
$instance->method3();
//or
$instance->method1();
if($instance->haserror()) die(error);
$instance->method2();
if(....) ...;
看上去很煩,寫起來更煩,特別是在開發期,那簡直是噩夢。
如果能保證這樣執行
php**
if($instance->m0()->m1()->m2()->haserror()) die(error);
if($instance->m0()->m1()->m2()->haserror()) die(error);
那就安逸了,實現這個,方法其實很簡單就是在這種可以鏈式進行的方法中包含錯誤判斷,無論如何都返回this, 當然類似haserror這樣的方法是不返回this的,這一類方法總是出現在最後,但是在開發期,我們在方法裡面複製貼上n多的
php**
if($this->haserror())
return $this
//someting..
return $this;
if($this->haserror())
return $this
//someting..
return $this;
這樣也夠煩人的,當然如果定型了,那嵌入這些**也無所謂。開發期就煩死人了。
可以利用php的魔術方法來實現這個,這裡給出乙個基本的結構
php**
class cchain
public function __call($m,$a)
public function __get($n)
public function __set($n,$v)
}
class test
public function seterror($v)
public function m0()
public function m1()
public function m2($foo=null)
/* someting without return*/
}
}
$test=new cchain(new test);
print_r( $test->m0()->m1()->m2(1) );
echo($test->error);
iOS鏈式程式設計
nsinteger result adder.add 4 sub 1 mult 2 div 3 表示 4 1 2 3,是不是很方便很直觀。我們知道,如果是c 的實現話鏈式操作是很簡單的,因為c 的函式呼叫就是通過點操作呼叫的,只需要返回物件本身就可以實現鏈結了。但是oc就不行了,因為oc的點操作表示...
鏈式程式設計初試
鏈式程式設計思想 將多行操作通過 連線成一句 使 可讀性好,比如 a 1 b 2 c 3 代表性的就是masonry 鏈式程式設計特點 方法的返回值是block,block必有返回值 自身物件 block引數 操作物件 先簡單介紹下目前咱們已知的程式設計思想。1 面向過程 處理事情以過程為核心,一步...
pandas 鏈式程式設計
鏈式程式設計技術 usual non functional way df2 df.copy df2 k v functional assign way df2 df.assign k v 就地分配可能會比assign快,但是assign可以方便地進行鏈式程式設計 使用外括號,這樣便於新增換行符 r ...