1 <sect1 id="zend.feed.custom-feed">
2 <title>Создание собственных классов лент и записей</title>
5 Вы можете наследовать классы <code>Zend_Feed</code>, если хотите обеспечить
6 собственный формат или такие улучшения, как автоматическая обработка
7 элементов, которые должны находиться в специальном пространстве имен.
11 Здесь приведен пример специального класса сообщения Atom, который управляет
12 сообщениями в собственным пространстве имен <code>myns:</code>. Обратите
13 внимание, что он автоматически производит вызов
14 <code>registerNamespace()</code>, так что конечным пользователям не
15 нужно будет беспокоиться о пространствах имен.
18 <example id="zend.feed.custom-feed.example.extending">
19 <title>Расширение класса сообщения Atom с добавлением специальных пространств имен</title>
20 <programlisting language="php"><![CDATA[
22 * Специальный класс сообщения знает URI ленты и может автоматически
23 * добавлять дополнительные пространства имен
25 class MyEntry extends Zend_Feed_Entry_Atom
28 public function __construct($uri = 'http://www.example.com/myfeed/',
31 parent::__construct($uri, $xml);
33 Zend_Feed::registerNamespace('myns', 'http://www.example.com/myns/1.0');
36 public function __get($var)
40 // преобразование myUpdated в myns:updated.
41 return parent::__get('myns:updated');
44 return parent::__get($var);
48 public function __set($var, $value)
52 // преобразование myUpdated в myns:updated.
53 parent::__set('myns:updated', $value);
57 parent::__set($var, $value);
61 public function __call($var, $unused)
65 // преобразование myUpdated в myns:updated.
66 return parent::__call('myns:updated', $unused);
69 return parent::__call($var, $unused);
76 Далее для использования этого класса просто создаете его экземпляр
77 и устанавливаете свойство <code>myUpdated</code>:
79 <programlisting language="php"><![CDATA[
80 $entry = new MyEntry();
81 $entry->myUpdated = '2005-04-19T15:30';
83 // вызов в виде метода обрабатывается функцией __call
85 // вызов в виде свойства обрабатывается функцией __get