[MANUAL] English:
[zend.git] / documentation / manual / ru / module_specs / Zend_Feed-CustomFeed.xml
blob400e4499eb868c286747a2b5cd06c35cbe969a0d
1 <sect1 id="zend.feed.custom-feed">
2     <title>Создание собственных классов лент и записей</title>
4     <para>
5         Вы можете наследовать классы <code>Zend_Feed</code>, если хотите обеспечить
6         собственный формат или такие улучшения, как автоматическая обработка
7         элементов, которые должны находиться в специальном пространстве имен.
8     </para>
10     <para>
11         Здесь приведен пример специального класса сообщения Atom, который управляет
12         сообщениями в собственным пространстве имен <code>myns:</code>. Обратите
13         внимание, что он автоматически производит вызов
14         <code>registerNamespace()</code>, так что конечным пользователям не
15         нужно будет беспокоиться о пространствах имен.
16     </para>
18     <example id="zend.feed.custom-feed.example.extending">
19         <title>Расширение класса сообщения Atom с добавлением специальных пространств имен</title>
20         <programlisting language="php"><![CDATA[
21 /**
22  * Специальный класс сообщения знает URI ленты и может автоматически
23  * добавлять дополнительные пространства имен
24  */
25 class MyEntry extends Zend_Feed_Entry_Atom
28     public function __construct($uri = 'http://www.example.com/myfeed/',
29                                 $xml = null)
30     {
31         parent::__construct($uri, $xml);
33         Zend_Feed::registerNamespace('myns', 'http://www.example.com/myns/1.0');
34     }
36     public function __get($var)
37     {
38         switch ($var) {
39             case 'myUpdated':
40                 // преобразование myUpdated в myns:updated.
41                 return parent::__get('myns:updated');
43             default:
44                 return parent::__get($var);
45             }
46     }
48     public function __set($var, $value)
49     {
50         switch ($var) {
51             case 'myUpdated':
52                 // преобразование myUpdated в myns:updated.
53                 parent::__set('myns:updated', $value);
54                 break;
56             default:
57                 parent::__set($var, $value);
58         }
59     }
61     public function __call($var, $unused)
62     {
63         switch ($var) {
64             case 'myUpdated':
65                 // преобразование myUpdated в myns:updated.
66                 return parent::__call('myns:updated', $unused);
68             default:
69                 return parent::__call($var, $unused);
70         }
71     }
73 ]]>
74         </programlisting>
75         <para>
76             Далее для использования этого класса просто создаете его экземпляр
77             и устанавливаете свойство <code>myUpdated</code>:
78         </para>
79         <programlisting language="php"><![CDATA[
80 $entry = new MyEntry();
81 $entry->myUpdated = '2005-04-19T15:30';
83 // вызов в виде метода обрабатывается функцией __call
84 $entry->myUpdated();
85 // вызов в виде свойства обрабатывается функцией __get
86 $entry->myUpdated;
87 ]]>
88         </programlisting>
89     </example>
91 </sect1>
92 <!--
93 vim:se ts=4 sw=4 et:
94 -->