Zend_Feed-CustomFeed.xml 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.feed.custom-feed">
  5. <title>Eigene Klassen für Feeds und Einträge</title>
  6. <para>
  7. Schließlich kannst du die <classname>Zend_Feed</classname> Klasse erweitern, wenn du dein
  8. eigenes Format oder Feinheiten wie die automatische Verarbeitung von Elementen, die in
  9. deinen eigenen Namensraum enthalten sein sollen, bereit stellen möchtest
  10. </para>
  11. <para>
  12. Hier ist ein Beispiel einer eigenen Klasse für Atom Einträge, die ihre eigenen Elemente für
  13. den <emphasis>myns:</emphasis> Namensraum verwendet. Beachte, dass sie auch den
  14. <methodname>registerNamespace()</methodname> Aufruf für dich durchführt, so dass sich der
  15. Endbenutzer nicht um Namensräume kümmern muss.
  16. </para>
  17. <example id="zend.feed.custom-feed.example.extending">
  18. <title>Die Klasse für Atom Einträge mit einem eigenen Namensraum erweitern</title>
  19. <programlisting language="php"><![CDATA[
  20. /**
  21. * Die eigene Klasse für Einträge kennt automatisch die Feed URI (optional)
  22. * und kann automatisch weitere Namensräume hinzufügen
  23. */
  24. class MyEntry extends Zend_Feed_Entry_Atom
  25. {
  26. public function __construct($uri = 'http://www.example.com/myfeed/',
  27. $xml = null)
  28. {
  29. parent::__construct($uri, $xml);
  30. Zend_Feed::registerNamespace('myns',
  31. 'http://www.example.com/myns/1.0');
  32. }
  33. public function __get($var)
  34. {
  35. switch ($var) {
  36. case 'myUpdated':
  37. // Übersetze myUpdated nach myns:updated.
  38. return parent::__get('myns:updated');
  39. default:
  40. return parent::__get($var);
  41. }
  42. }
  43. public function __set($var, $value)
  44. {
  45. switch ($var) {
  46. case 'myUpdated':
  47. // Übersetze myUpdated nach myns:updated.
  48. parent::__set('myns:updated', $value);
  49. break;
  50. default:
  51. parent::__set($var, $value);
  52. }
  53. }
  54. public function __call($var, $unused)
  55. {
  56. switch ($var) {
  57. case 'myUpdated':
  58. // Übersetze myUpdated zu myns:updated.
  59. return parent::__call('myns:updated', $unused);
  60. default:
  61. return parent::__call($var, $unused);
  62. }
  63. }
  64. }
  65. ]]></programlisting>
  66. <para>
  67. Um diese Klasse zu verwenden, musst du sie nur direkt instanziieren und die
  68. <property>myUpdated</property> Eigenschaft setzen.
  69. </para>
  70. <programlisting language="php"><![CDATA[
  71. $entry = new MyEntry();
  72. $entry->myUpdated = '2005-04-19T15:30';
  73. // Methoden-Stil Aufruf wird von der _call Methode gehandhabt
  74. $entry->myUpdated();
  75. // Eigenschaften-Stil Aufruf wurd von der __get Methode gehandhabt
  76. $entry->myUpdated;
  77. ]]></programlisting>
  78. </example>
  79. </sect1>