次のコード行がありますが、最初の表記法は本来あるべきこと (XML 要素とそのコンテンツを DOM に追加する) を行いますが、メソッドをチェーンする場合はそうではありません。
/**
* @var string $key
* @var DOMNode $value
*/
$newElem = $dom->createElement($key);
$newElem->appendChild($value);
次の例は E_WARNING になります: DOMNode::appendChild(): DOMNode を取得できませんでした。(そのバグ/エラーを見つけるのに約 1 時間かかります。)
$newElem = $dom->createElement($key)->appendChild($value);
同じコードが異なる表記法でエラーになる理由を誰か説明できますか?
編集: PHP 5.3.5 で実行すると、E-WARNING-error が発生する test-case をアップロードしました。