Наконец, вы можете наследовать классы Zend_Feed
, если хотите обеспечить
собственный формат или такие детали, как автоматическое управление элементами,
которые должны находиться в специальном пространстве имен.
Здесь приведен пример специального класса публикации Atom, который управляет
публикациями в собственным пространстве имен myns:
. Обратите
внимание, что он автоматически делает вызов registerNamespace()
,
так что конечным пользователям не нужно беспокоиться о пространствах имен.
Пример 13.7. Расширение класса публикации Atom с добавлением специальных пространств имен
<?php /** * Специальный класс публикации знает URI ленты и может автоматически * добавлять дополнительные пространства имен */ class MyEntry extends Zend_Feed_Entry_Atom { public function __construct($uri = 'http://www.example.com/myfeed/', $xml = null) { parent::__construct($uri, $xml); Zend_Feed::registerNamespace('myns', 'http://www.example.com/myns/1.0'); } public function __get($var) { switch ($var) { case 'myUpdated': // преобразование myUpdated в myns:updated. return parent::__get('myns:updated'); default: return parent::__get($var); } } public function __set($var, $value) { switch ($var) { case 'myUpdated': // преобразование myUpdated в myns:updated. parent::__set('myns:updated', $value); break; default: parent::__set($var, $value); } } } ?>
Далее для использования этого класса просто создаете его экземпляр и устанавливаете
свойство myUpdated
:
<?php $entry = new MyEntry(); $entry->myUpdated = '2005-04-19T15:30'; ?>