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 является добавленным узлом, а не родительским элементом.

Другие вопросы по тегам