| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.feed.custom-feed">
- <title>Eigene Klassen für Feeds und Einträge</title>
- <para>
- Schließlich kannst du die <classname>Zend_Feed</classname> Klasse erweitern, wenn du dein
- eigenes Format oder Feinheiten wie die automatische Verarbeitung von Elementen, die in
- deinen eigenen Namensraum enthalten sein sollen, bereit stellen möchtest
- </para>
- <para>
- Hier ist ein Beispiel einer eigenen Klasse für Atom Einträge, die ihre eigenen Elemente für
- den <emphasis>myns:</emphasis> Namensraum verwendet. Beachte, dass sie auch den
- <methodname>registerNamespace()</methodname> Aufruf für dich durchführt, so dass sich der
- Endbenutzer nicht um Namensräume kümmern muss.
- </para>
- <example id="zend.feed.custom-feed.example.extending">
- <title>Die Klasse für Atom Einträge mit einem eigenen Namensraum erweitern</title>
- <programlisting language="php"><![CDATA[
- /**
- * Die eigene Klasse für Einträge kennt automatisch die Feed URI (optional)
- * und kann automatisch weitere Namensräume hinzufügen
- */
- 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':
- // Übersetze myUpdated nach myns:updated.
- return parent::__get('myns:updated');
- default:
- return parent::__get($var);
- }
- }
- public function __set($var, $value)
- {
- switch ($var) {
- case 'myUpdated':
- // Übersetze myUpdated nach myns:updated.
- parent::__set('myns:updated', $value);
- break;
- default:
- parent::__set($var, $value);
- }
- }
- public function __call($var, $unused)
- {
- switch ($var) {
- case 'myUpdated':
- // Übersetze myUpdated zu myns:updated.
- return parent::__call('myns:updated', $unused);
- default:
- return parent::__call($var, $unused);
- }
- }
- }
- ]]></programlisting>
- <para>
- Um diese Klasse zu verwenden, musst du sie nur direkt instanziieren und die
- <property>myUpdated</property> Eigenschaft setzen.
- </para>
- <programlisting language="php"><![CDATA[
- $entry = new MyEntry();
- $entry->myUpdated = '2005-04-19T15:30';
- // Methoden-Stil Aufruf wird von der _call Methode gehandhabt
- $entry->myUpdated();
- // Eigenschaften-Stil Aufruf wurd von der __get Methode gehandhabt
- $entry->myUpdated;
- ]]></programlisting>
- </example>
- </sect1>
|