oop — приведение объекта к подклассу в переполнении стека

Я пытаюсь продлить SimpleXMLElement класс, чтобы обеспечить механизм для слияния суб XML строки или другого SimpleXMLElement в мой SimpleXMLElement, код для этого основан на код, написанный Карлосом Сото в ответе на вопрос «PHP — SimpleXML — AddChild с другим элементом SimpleXMLElement».

Пока я добавляю только addXml функция в подклассе (должна работать аналог встроенной addChild возвращая только что созданный элемент), но я предполагаю, что каждый вызов функции будет возвращать SimpleXMLElement а не мой недавно созданный подкласс. Есть ли способ снижения в PHP, сравнимый с Java?

редактировать как кто-то думал, чтобы понизить голос без какой-либо причины: Я не Java-разработчик, и обычно я не возражаю, даже с такой проблемой, но SimpleXMLElement это класс PHP, поэтому я не могу легко обернуть его без написания большого количества кода. Может быть, какая-то магия отражения делает это возможным?

0

Решение

Когда вы расширяете от SimpleXMLElement родительские методы дадут вам ваш новый тип:

class MyXml extends SimpleXMLElement
{
}

$xml = new MyXml('<root />');

$child = $xml->addChild('child');

var_dump(get_class($child)); # string(5) "MyXml"

Это специфично для SimpleXMLElement а не PHP вообще. Так что вы всегда должны попробовать. Это то, что человек, который прокомментировал ваш вопрос, пытался вам сказать.

Рядом с этим simplexml_import_dom функция имеет второй параметр, для которого вы можете назвать имя класса. Вы также можете передать SimpleXMLElement для этого объекта PHP также будет брать имя класса из экземпляра.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]