1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20774 -->
4 <sect1 id="zend.feed.custom-feed">
5 <title>独自のフィードクラスおよびエントリクラス</title>
9 あるいは要素が自動的に所定の名前空間に配置されるなどの素敵な機能を追加したい、
10 といった場合は <classname>Zend_Feed</classname> クラスを拡張して対応します。
14 以下に Atom エントリクラスを拡張する例を示します。
15 このクラスでは、独自の名前空間 <emphasis>myns:</emphasis> を使用しています。
16 また、<methodname>registerNamespace()</methodname> がコールされていることに注意しましょう。
17 このクラスの使用者は、名前空間について心配する必要がなくなります。
20 <example id="zend.feed.custom-feed.example.extending">
21 <title>独自の名前空間を使用しての Atom エントリクラスの拡張</title>
23 <programlisting language="php"><![CDATA[
25 * この独自エントリクラスは、自動的にフィード URI を識別 (オプション) して
28 class MyEntry extends Zend_Feed_Entry_Atom
31 public function __construct($uri = 'http://www.example.com/myfeed/',
34 parent::__construct($uri, $xml);
36 Zend_Feed::registerNamespace('myns',
37 'http://www.example.com/myns/1.0');
40 public function __get($var)
44 // myUpdated を myns:updated に変換します
45 return parent::__get('myns:updated');
48 return parent::__get($var);
52 public function __set($var, $value)
56 // myUpdated を myns:updated に変換します
57 parent::__set('myns:updated', $value);
61 parent::__set($var, $value);
65 public function __call($var, $unused)
69 // myUpdated を myns:updated に変換します
70 return parent::__call('myns:updated', $unused);
73 return parent::__call($var, $unused);
80 そしてこのクラスを使用すると、インスタンスを作成したらすぐに
81 <property>myUpdated</property> プロパティを設定できます。
84 <programlisting language="php"><![CDATA[
85 $entry = new MyEntry();
86 $entry->myUpdated = '2005-04-19T15:30';
88 // メソッド型のコールは __call 関数が処理します
90 // プロパティ型のコールは __get 関数が処理します