public function add($ child){ return $ this-> children [] = $ child; }這個PHP函數返回什麼?
順便說一句,這是來自Dagfinn Reiersol在PHP中的摘錄。根據這本書,這會返回$ child,但是不應該在成功分配的情況下返回true,否則返回false?
在此先感謝
public function add($ child){ return $ this-> children [] = $ child; }這個PHP函數返回什麼?
順便說一句,這是來自Dagfinn Reiersol在PHP中的摘錄。根據這本書,這會返回$ child,但是不應該在成功分配的情況下返回true,否則返回false?
在此先感謝
它返回$child
。這是因爲$child
首先被添加到數組$this->children[]
。然後,返回此分配的結果。
本質上講,它是簡寫:
public function add($child){
$this->children[]=$child;
return $child;
}
這種快捷的工作,因爲在PHP中,任務是「右結合」:http://www.php.net/manual/en/language.operators.precedence.php
這意味着$a = ($b = 3)
實際上是從權評估 - 3
被存儲在$b
,然後$a
。另外,這裏是在頁面上我提供了一個鏈接到一個注:
雖然比= 大多數其他優先級高,PHP仍舊 允許類似 以下表達式:
if (!$a = foo())
,其中 如果foo()
的返回值爲 則爲$a
。
它返回的孩子,因爲分配正義返回任何分配。
成功是否應該返回true是不是一個規則,所以如果是記錄返回子,它是正確的。
嗯..好吧..我現在沒有太多時間,但我會多給點思考,然後回來並將其標記爲正確的答案。謝謝。 – 2010-09-20 22:18:44
好的謝謝,我發佈了什麼樣的表達會看起來像不使用快捷方式。 – 2010-09-20 22:21:06
很好的解釋@SimpleCoder。但是,長期解釋需要的是一個完美的例子,說明爲什麼這種簡寫在現實生活中是一個糟糕的想法。希望PHP in Action的作者使用它作爲如何編寫可維護代碼的案例研究。 – 2010-09-20 22:36:40