6.8. 独自のフィードクラスおよびエントリクラス
前のページ | 第6章 Zend_Feed | 次のページ

## 6.8. 独自のフィードクラスおよびエントリクラス

独自のフォーマットを提供したい、 あるいは要素が自動的に所定の名前空間に配置されるなどの素敵な機能を追加したい、 といった場合は `Zend_Feed` クラスを拡張して対応します。

以下に Atom エントリクラスを拡張する例を示します。 このクラスでは、独自の名前空間 `myns:` を使用しています。 また、`registerNamespace()` がコールされていることに注意しましょう。 このクラスの使用者は、名前空間について心配する必要がなくなります。

例 6.7. 独自の名前空間を使用しての Atom エントリクラスの拡張

    <?php

    /**
     * この独自エントリクラスは、自動的にフィード URI を識別 (オプション) して
     * 名前空間を追加します
     */
    class MyEntry extends Zend_Feed_EntryAtom
    {

        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':
                    // myUpdated を myns:updated に変換します
                    return parent::__get('myns:updated');

                default:
                    return parent::__get($var);
                }
        }

        public function __set($var, $value)
        {
            switch ($var) {
                case 'myUpdated':
                    // myUpdated を myns:updated に変換します
                    parent::__set('myns:updated', $value);
                    break;

                default:
                    parent::__set($var, $value);
            }
        }

    }

    ?>

そしてこのクラスを使用すると、インスタンスを作成したらすぐに `myUpdated` プロパティを設定することができます。

    <?php

    $entry = new MyEntry();
    $entry->myUpdated = '2005-04-19T15:30';

    ?>

前のページ | 上に戻る | 次のページ
6.7. フィードおよびエントリの構造の変更 | ホーム | 第7章 Zend_Filter