4

public function add($ child){return $ this-> children [] = $ child; }

ところで、これはDagfinnReiersolによるPHPinActionからの抜粋です。この本によると、これは$ childを返しますが、割り当てが成功した場合はtrueを返し、そうでない場合はfalseを返す必要がありますか?

前もって感謝します

4

2 に答える 2

9

を返します$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ます。

詳細情報: http: //en.wikipedia.org/wiki/Operator_associativity

于 2010-09-20T22:10:41.400 に答える
1

割り当ては割り当てられたものを返すだけなので、子を返します。

成功したときにtrueを返すかどうかはルールではないため、子を返すことが文書化されている場合は正しいです。

于 2010-09-20T22:12:36.853 に答える