这个PHP函数返回什么?
问题描述:
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