есть некий xml файл: Код (PHP): <level1> <level2> <level3>content</level3> </level2> </level1> есть встроенный класс, который переделает его в объект: Код (PHP): $xmlObj= SimpleXMLElement($path); теперь $xmlObj это объект на основе level1. в его свойствах массивы из объектов следующих уровней. я хочу допилить класс SimpleXMLElement до класса myClass extends SimpleXMLElement, который, помимо всего прочего, обретет метод, допустим getHtml(). хочу иметь возможность визуально оформлять объекты и отправлять в браузер. начал было кое-что писать и уперся в вопрос... $xmlObj это объект на основе level1, представитель класса SimpleXMLElement. к нему я могу дописать методы. а подобъект $xmlObj->level2 представитель какого класса? "extents что" мне надо дописать, чтобы к нему добавился метод getHtml()? или как это делать правильно? если задача: возможность сверстать отдельно любой нижний уровень xml документа или любой уровень выше в совокупности с нижними.
Иди рекурсией по дереву объекта и верстай. Тебе для этого не класс нужен, а одна-единственная функция, статичная. Скармливай ей объект и получай от нее верстку. На аргумент "не хочу функции, хочу все на классах", сразу привожу контр-аргумент: в ООП тоже имеют функции без контекста. Их обычно объединяют в некий статичный класс. Это называется "библиотека". Не путать с бинарными библиотеками .dll и .so, это не одно и то же.
все, дошло, они там все объекты SimpleXMLElement, вложенные тоже. спасибо за совет... возможно я к этому приду, позже) сейчас все в новинку, мозги заворачиваются всю эту логику продумать. пока мне проще дописать один общий открытый метод getHtml() и кучку вспомогательных приватных. в getHtml() будет определяться тип объекта (уровень вложенности, необходимое форматирование для этого уровня) и через switch выбираться необходимый приватный метод для всего этого. в нем уже будут вызываться другие приватные методы форматирования более глубоких объектов и т.д...