[ZF-10089] Zend_Log
[zend.git] / documentation / manual / pl / module_specs / Zend_Feed-CustomFeed.xml
blob8dc5fa1f635b60e899397e67d07a5f62038c1da6
1 <sect1 id="zend.feed.custom-feed">
2     <title>Własne klasy kanału i wpisu</title>
4     <para>
5         Ostatecznie możesz rozszerzyć klasę <code>Zend_Feed</code> jeśli chcesz
6         stworzyć swój własny format lub zapewnić automatyczną obsługę elementów,
7         które działają w innej przestrzeni nazw.
8     </para>
10     <para>
11         Oto przykład własnej klasy wpisu Atom która obsługuje własną przestrzeń
12         nazw <code>myns:</code> wpisów. Zauważ, że ona także wywołuje za Ciebie
13         metodę <code>registerNamespace()</code>, dzięki czemu użytkownik końcowy
14         nie musi w ogóle martwić się o przestrzenie nazw.
15     </para>
17     <example id="zend.feed.custom-feed.example.extending">
18         <title>Rozszerzanie klasy wpisu Atom z własnymi przestrzeniami nazw</title>
19         <programlisting role="php"><![CDATA[
20 /**
21  * Własna klasa wpisu może automatycznie nadawać adres URI (opcjonalnie)
22  * oraz automatycznie dodawać dodatkowe przestrzenie nazw.
23  */
24 class MyEntry extends Zend_Feed_Entry_Atom
27     public function __construct($uri = 'http://www.example.com/myfeed/',
28                                 $xml = null)
29     {
30         parent::__construct($uri, $xml);
32         Zend_Feed::registerNamespace('myns',
33                                      'http://www.example.com/myns/1.0');
34     }
36     public function __get($var)
37     {
38         switch ($var) {
39             case 'myUpdated':
40                 // Tłumaczy myUpdated na 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                 // Tłumaczy myUpdated na 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                 // Tłumaczy myUpdated na myns:updated.
66                 return parent::__call('myns:updated', $unused);
68             default:
69                 return parent::__call($var, $unused);
70         }
71     }
74 ]]>
75         </programlisting>
76         <para>
77             Teraz aby użyć tej klasy, musisz po prostu bezpośrednio utworzyć jej
78             instancję i przypisać wartość właściwości <code>myUpdated</code>:
79         </para>
80         <programlisting role="php"><![CDATA[
81 $entry = new MyEntry();
82 $entry->myUpdated = '2005-04-19T15:30';
84 // wywołanie w stylu metody jest obsługiwane przez funkcję __call
85 $entry->myUpdated();
86 // wywołanie w stylu właściwości jest obsługiwane przez funkcję __get
87 $entry->myUpdated;
88 ]]>
89         </programlisting>
90     </example>
92 </sect1>