3

次のコード行がありますが、最初の表記法は本来あるべきこと (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 をアップロードしました。

4

2 に答える 2

1

PHP の構文により、ここで違いが生じることはありません。

$b = $a; $b->c();と同じ$a->c();です。

コードに何か他の問題があります。

于 2011-07-04T14:02:43.150 に答える
-1

これはどう?

$newElem = ($dom->createElement($key))->appendChild($value);

この場合、$newElem は追加されたノードであり、親要素ではないことに注意してください。

于 2011-07-04T13:55:50.070 に答える