2015-03-19 4 views
0

Я пытаюсь расширить SimpleXMLElement класс, чтобы обеспечить механизм для объединения подстроки XML или другого SimpleXMLElement в мой SimpleXMLElement, код, который основан на code written by Carlos C Soto in an answer на вопрос "PHP - SimpleXML - AddChild with another SimpleXMLElement".Cast Object подкласс в PHP

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

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

ответ

1

Когда вы расширяете от 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 function имеет второй параметр, для которого вы можете назвать имя класса. Вы также можете передать объект SimpleXMLElement, а затем PHP получит имя класса из экземпляра.

Смежные вопросы