Zend_Feed-CustomFeed.xml 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <sect1 id="zend.feed.custom-feed">
  2. <title>מחלקות סנדקציה מותאמות אישית</title>
  3. <para>
  4. לבסוף, ניתן להרחיב את מחלקות ה <code>Zend_Feed</code> אם תרצה להזין ולספק פורמט מותאם אישית שלך, או להוסיף פונקציונליות מדוייקת יותר לניהול ותפעול של אלמנטים.
  5. </para>
  6. <para>
  7. הנה דוגמא למחלקה מותאמת אישית לניהול תגי Atom אשר מטפלת בתגיות <code>myns:</code> בעצמה.
  8. דע שזה גם מבצע את הקריאה אל <code>registerNamespace()</code>, כדי שהמשתמש הסופי לא יצטרך לדאוג לגבי שם התגית הזאת.
  9. </para>
  10. <example id="zend.feed.custom-feed.example.extending">
  11. <title>הרחבת מחלקת ניהול הסנדקציה של Atom</title>
  12. <programlisting role="php"><![CDATA[
  13. /**
  14. * The custom entry class automatically knows the feed URI (optional) and
  15. * can automatically add extra namespaces.
  16. */
  17. class MyEntry extends Zend_Feed_Entry_Atom
  18. {
  19. public function __construct($uri = 'http://www.example.com/myfeed/',
  20. $xml = null)
  21. {
  22. parent::__construct($uri, $xml);
  23. Zend_Feed::registerNamespace('myns',
  24. 'http://www.example.com/myns/1.0');
  25. }
  26. public function __get($var)
  27. {
  28. switch ($var) {
  29. case 'myUpdated':
  30. // Translate myUpdated to myns:updated.
  31. return parent::__get('myns:updated');
  32. default:
  33. return parent::__get($var);
  34. }
  35. }
  36. public function __set($var, $value)
  37. {
  38. switch ($var) {
  39. case 'myUpdated':
  40. // Translate myUpdated to myns:updated.
  41. parent::__set('myns:updated', $value);
  42. break;
  43. default:
  44. parent::__set($var, $value);
  45. }
  46. }
  47. public function __call($var, $unused)
  48. {
  49. switch ($var) {
  50. case 'myUpdated':
  51. // Translate myUpdated to myns:updated.
  52. return parent::__call('myns:updated', $unused);
  53. default:
  54. return parent::__call($var, $unused);
  55. }
  56. }
  57. }
  58. ]]>
  59. </programlisting>
  60. <para>
  61. אז כדי להשתמש במחלקה זו, יהיה צורך רק בליצור אובייקט שלה ולקרוא לערך <code>myUpdated</code>:
  62. </para>
  63. <programlisting role="php"><![CDATA[
  64. $entry = new MyEntry();
  65. $entry->myUpdated = '2005-04-19T15:30';
  66. // method-style call is handled by __call function
  67. $entry->myUpdated();
  68. // property-style call is handled by __get function
  69. $entry->myUpdated;
  70. ]]>
  71. </programlisting>
  72. </example>
  73. </sect1>
  74. <!--
  75. vim:se ts=4 sw=4 et:
  76. -->