私は以下のコードラインを持っていますが、最初の表記法はXMLエレメントとそのコンテンツをDOMに追加する必要がありますが、メソッドを連鎖するのではありません。PHP DOM、メソッド連鎖
/**
* @var string $key
* @var DOMNode $value
*/
$newElem = $dom->createElement($key);
$newElem->appendChild($value);
次の例E_WARNINGになります:DOMNodeを::のappendChild()は:DOMNodeをを取得できませんでした。異なる表記で同じコードがエラーにつながる理由(そのバグ/エラーを発見する時間について私がかかります。)
$newElem = $dom->createElement($key)->appendChild($value);
誰も説明できますか?
編集:私はuploaded a test-caseでした。その結果、PHP 5.3.5で動作しているときにE-WARNINGエラーが発生します。
エラーを再現できません。 '$ key'と' $ value'に何を表示できますか? – Yoshi
ここに同じ、期待どおりに動作し、エラーが表示されます。どのような正確なPHPのバージョンを使用していますか? – wonk0
これはループで実行され、キーは常に文字列であり、新しい要素(たとえば、「名前」)の名前です。値は '$ dom-> createTextNode( 'Test-Marker')'など)のキーに応じて、 'DOMCharacterData'または' DOMText'です。私は、上記に貼り付けられた部分を変更せずに、プログラムを何度もテストしました。 PHP 5.3.5をUbuntu 11.04で使用しています – feeela