За последние 24 часа нас посетил 30521 программист и 1797 роботов. Сейчас ищет 741 программист ...

SimpleXMLElement и верстка на основе его представителя

Тема в разделе "PHP для новичков", создана пользователем osvical, 9 июн 2015.

  1. osvical

    osvical Новичок

    С нами с:
    9 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    есть некий xml файл:
    Код (PHP):
    1. <level1>
    2.   <level2>
    3.     <level3>content</level3>
    4.   </level2>
    5. </level1>
    есть встроенный класс, который переделает его в объект:
    Код (PHP):
    1. $xmlObj= SimpleXMLElement($path);
    теперь $xmlObj это объект на основе level1. в его свойствах массивы из объектов следующих уровней. я хочу допилить класс SimpleXMLElement до класса myClass extends SimpleXMLElement, который, помимо всего прочего, обретет метод, допустим getHtml(). хочу иметь возможность визуально оформлять объекты и отправлять в браузер.

    начал было кое-что писать и уперся в вопрос... $xmlObj это объект на основе level1, представитель класса SimpleXMLElement. к нему я могу дописать методы. а подобъект $xmlObj->level2 представитель какого класса? "extents что" мне надо дописать, чтобы к нему добавился метод getHtml()?

    или как это делать правильно? если задача: возможность сверстать отдельно любой нижний уровень xml документа или любой уровень выше в совокупности с нижними.
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Иди рекурсией по дереву объекта и верстай. Тебе для этого не класс нужен, а одна-единственная функция, статичная. Скармливай ей объект и получай от нее верстку.

    На аргумент "не хочу функции, хочу все на классах", сразу привожу контр-аргумент: в ООП тоже имеют функции без контекста. Их обычно объединяют в некий статичный класс. Это называется "библиотека". Не путать с бинарными библиотеками .dll и .so, это не одно и то же.
     
  3. osvical

    osvical Новичок

    С нами с:
    9 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    все, дошло, они там все объекты SimpleXMLElement, вложенные тоже.
    спасибо за совет... возможно я к этому приду, позже) сейчас все в новинку, мозги заворачиваются всю эту логику продумать. пока мне проще дописать один общий открытый метод getHtml() и кучку вспомогательных приватных. в getHtml() будет определяться тип объекта (уровень вложенности, необходимое форматирование для этого уровня) и через switch выбираться необходимый приватный метод для всего этого. в нем уже будут вызываться другие приватные методы форматирования более глубоких объектов и т.д...