Zend_Feed-CustomFeed.xml 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <sect1 id="zend.feed.custom-feed">
  2. <title>Aangepaste Feed en Entry klassen</title>
  3. <para>
  4. Naast dit alles is het ook mogelijk om de <code>Zend_Feed</code> klassen uit te breiden wanneer je een eigen formaat of extra's wil aanbieden, zoals automatisch afhandelen van elementen in een aangepaste namespace.
  5. </para>
  6. <para>
  7. Hier is een voorbeeld van een aangepaste Atom entry klasse die zijn eigen <code>myns:</code>
  8. namespace behandeld. Merk op dat het ook de oproep <code>registerNamespace()</code> voor je
  9. afhandelt, zodanig dat de eindgebruiker zich helemaal niet met namespaces hoeft bezig te houden.
  10. </para>
  11. <example>
  12. <title>De Atom Entry Class uitbreiden met aangepaste Namespaces</title>
  13. <programlisting role="php"><![CDATA[
  14. <?php
  15. /**
  16. * De aangepaste entry klasse kent automatisch de feed URI (optioneel) en
  17. * kan automatisch extra namespaces toevoegen.
  18. */
  19. class MyEntry extends Zend_Feed_Entry_Atom
  20. {
  21. public function __construct($uri = 'http://www.example.com/myfeed/',
  22. $xml = null)
  23. {
  24. parent::__construct($uri, $xml);
  25. Zend_Feed::registerNamespace('myns', 'http://www.example.com/myns/1.0');
  26. }
  27. public function __get($var)
  28. {
  29. switch ($var) {
  30. case 'myUpdated':
  31. // Vertaal myUpdated naar myns:updated.
  32. return parent::__get('myns:updated');
  33. default:
  34. return parent::__get($var);
  35. }
  36. }
  37. public function __set($var, $value)
  38. {
  39. switch ($var) {
  40. case 'myUpdated':
  41. // Vertaal myUpdated naar myns:updated.
  42. parent::__set('myns:updated', $value);
  43. break;
  44. default:
  45. parent::__set($var, $value);
  46. }
  47. }
  48. }
  49. ?>]]> </programlisting>
  50. <para>
  51. Om deze klasse nu te gebruiken moet je ze gewoon direct instantiëren en de <code>myUpdated</code>
  52. eigenschap zetten:
  53. </para>
  54. <programlisting role="php"><![CDATA[
  55. <?php
  56. $entry = new MyEntry();
  57. $entry->myUpdated = '2005-04-19T15:30';
  58. ?>]]> </programlisting>
  59. </example>
  60. </sect1>
  61. <!--
  62. vim:se ts=4 sw=4 et:
  63. -->