PHP DOM, метод цепочки
У меня есть следующая строка кода, тогда как первая нотация делает то, что должна (добавление XML-элемента и его содержимого в 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);
Кто-нибудь может объяснить, почему один и тот же код в разных обозначениях приводит к ошибкам?
РЕДАКТИРОВАТЬ: я загрузил тестовый пример, который приводит к ошибке E-WARNING, при работе с PHP 5.3.5.
2 ответа
Это невозможно из-за синтаксиса PHP, потому что здесь есть разница.
$b = $a; $b->c();
такой же как $a->c();
,
Что-то еще не так с вашим кодом.
Как насчет этого?
$newElem = ($dom->createElement($key))->appendChild($value);
помните, что в этом случае $newElem является добавленным узлом, а не родительским элементом.