| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <!-- EN-Revision: 24249 -->
- <sect1 id="zend.feed.importing">
- <title>フィードの読み込み</title>
- <para>
- <classname>Zend_Feed</classname> を使用すると、フィードの取得が非常に簡単に行えます。
- フィードの <acronym>URI</acronym> がわかれば、単に <methodname>Zend_Feed::import()</methodname>
- メソッドを使用すればよいのです。
- </para>
- <programlisting language="php"><![CDATA[
- $feed = Zend_Feed::import('http://feeds.example.com/feedName');
- ]]></programlisting>
- <para>
- <classname>Zend_Feed</classname> を使用して、ファイルや <acronym>PHP</acronym>
- 文字列変数からフィードを読み込むこともできます。
- </para>
- <programlisting language="php"><![CDATA[
- // テキストファイルからフィードを読み込みます
- $feedFromFile = Zend_Feed::importFile('feed.xml');
- // PHP の文字列変数からフィードを読み込みます
- $feedFromPHP = Zend_Feed::importString($feedString);
- ]]></programlisting>
- <para>
- 上のすべての例では、成功した場合に返されるのは
- <classname>Zend_Feed_Abstract</classname> を実装したクラスのオブジェクトで、
- フィードの形式によって異なります。もし上のメソッドで <acronym>RSS</acronym> フィードを取得したのなら、
- 返されるオブジェクトは <classname>Zend_Feed_Rss</classname> です。一方、Atom
- フィードを読み込んだのなら <classname>Zend_Feed_Atom</classname>
- オブジェクトが返されます。読み込みに失敗したりフィードの形式がおかしかったりした場合は
- <classname>Zend_Feed_Exception</classname> がスローされます。
- </para>
- <sect2 id="zend.feed.importing.custom">
- <title>独自のフィード</title>
- <para>
- <classname>Zend_Feed</classname> を使用すると、独自のフィードを簡単に作成できます。
- 単に、配列を作成してそれを <classname>Zend_Feed</classname> で読み込むだけでいいのです。
- 配列を読み込むには <methodname>Zend_Feed::importArray()</methodname> あるいは
- <methodname>Zend_Feed::importBuilder()</methodname> を使用します。
- この場合、<classname>Zend_Feed_Builder_Interface</classname>
- を実装した独自のデータソースによって配列がその場で算出されます。
- </para>
- <sect3 id="zend.feed.importing.custom.importarray">
- <title>独自の配列の読み込み</title>
- <programlisting language="php"><![CDATA[
- // フィードを配列から読み込みます
- $atomFeedFromArray = Zend_Feed::importArray($array);
- // この行は、上と同じ意味です。
- // デフォルトで Zend_Feed_Atom のインスタンスを返します
- $atomFeedFromArray = Zend_Feed::importArray($array, 'atom');
- // rss フィードを配列から読み込みます
- $rssFeedFromArray = Zend_Feed::importArray($array, 'rss');
- ]]></programlisting>
- <para>
- 配列の書式は、次のような構造になっていなければなりません。
- </para>
- <programlisting language="php"><![CDATA[
- array(
- // 必須
- 'title' => 'フィードのタイトル',
- 'link' => 'フィードへの正式な url',
- // 任意
- 'lastUpdate' => '更新日のタイムスタンプ',
- 'published' => '公開日のタイムスタンプ',
- // 必須
- 'charset' => 'テキストデータの文字セット',
- // 任意
- 'description' => 'フィードについての短い説明',
- 'author' => 'フィードの作者/公開者',
- 'email' => '作者のメールアドレス',
- // 任意、atom を使用している場合は無視されます
- 'webmaster' => '技術的な問題の担当者のメールアドレス',
- // 任意
- 'copyright' => '著作権に関する情報',
- 'image' => '画像への url',
- 'generator' => '作成したツール',
- 'language' => 'フィードで使用している言語',
- // 任意、atom を使用している場合は無視されます
- 'ttl' => 'フィードを何分間キャッシュするか',
- 'rating' => 'チャネルの PICS レート',
- // 任意、atom を使用している場合は無視されます
- // 更新を通知するクラウド
- 'cloud' => array(
- // 必須
- 'domain' => 'クラウドのドメイン、たとえば rpc.sys.com',
- // 任意、デフォルトは 80
- 'port' => '接続するポート',
- // 必須
- 'path' => 'クラウドのパス、たとえば /RPC2',
- 'registerProcedure' => 'コールするプロシージャ、たとえば myCloud.rssPleaseNotify',
- 'protocol' => '使用するプロトコル、たとえば soap や xml-rpc'
- ),
- // 任意、atom を使用している場合は無視されます
- // フィードとともに表示させるテキスト入力ボックス
- 'textInput' => array(
- // 必須
- 'title' => 'テキスト入力欄の Submit ボタンのラベル',
- 'description' => 'テキスト入力欄についての説明',
- 'name' => 'テキスト入力欄のテキストオブジェクトの名前',
- 'link' => '入力内容を処理する CGI スクリプトの URL'
- ),
- // 任意、atom を使用している場合は無視されます
- // アグリゲータに対して、特定の時間に処理を飛ばすように伝えるヒント
- 'skipHours' => array(
- // 最大 24 行までで、値は 0 から 23 までの数値
- // たとえば 13 (午後一時)
- '24 時間形式の時間'
- ),
- // 任意、atom を使用している場合は無視されます
- // アグリゲータに対して、特定の日に処理を飛ばすように伝えるヒント
- 'skipDays ' => array(
- // 最大 7 行まで
- // 値は Monday、Tuesday、Wednesday、Thursday、Friday、Saturday あるいは Sunday
- // たとえば Monday
- 'スキップする曜日'
- ),
- // 任意、atom を使用している場合は無視されます
- // Itunes 拡張データ
- 'itunes' => array(
- // 任意、デフォルトは本体の author の値
- 'author' => 'Artist 列',
- // 任意、デフォルトは本体の author の値
- // ポッドキャストのオーナー
- 'owner' => array(
- 'name' => 'オーナーの名前',
- 'email' => 'オーナーのメールアドレス'
- ),
- // 任意、デフォルトは本体の image の値
- 'image' => 'アルバム/ポッドキャストの画像',
- // 任意、デフォルトは本体の description の値
- 'subtitle' => '短い説明',
- 'summary' => '長い説明',
- // 任意
- 'block' => 'エピソードを表示しないようにする (yes|no)',
- // 必須、Category 列および iTunes Music Store Browse での値
- 'category' => array(
- // 最大 3 行まで
- array(
- // 必須
- 'main' => 'メインカテゴリ',
- // 任意
- 'sub' => 'サブカテゴリ'
- )
- ),
- // 任意
- 'explicit' => 'ペアレンタルコントロールの警告グラフィック (yes|no|clean)',
- 'keywords' => '最大 12 件までのキーワードのカンマ区切りリスト',
- 'new-feed-url' => 'iTunes に対して新しいフィード URL の場所を通知するために使用する'
- ),
- 'entries' => array(
- array(
- // 必須
- 'title' => 'フィードエントリのタイトル',
- 'link' => 'フィードエントリへの url',
- // 必須、テキストのみで html を含まない
- 'description' => 'フィードエントリの短いバージョン',
- // 任意
- 'guid' => '記事の id。'
- . '存在しない場合は link の値を使用します',
- // 任意、html を含めることが可能
- 'content' => '長いバージョン',
- // 任意
- 'lastUpdate' => '公開日のタイムスタンプ',
- 'comments' => 'フィードエントリに対するコメントページ',
- 'commentRss' => '関連するコメントへのフィードの url',
- // 任意、フィードエントリの元のソース
- 'source' => array(
- // 必須
- 'title' => '元ソースのタイトル',
- 'url' => '元ソースへの url'
- ),
- // 任意、関連付けるカテゴリの一覧
- 'category' => array(
- array(
- // 必須
- 'term' => '最初のカテゴリのラベル',
- // 任意
- 'scheme' => 'カテゴリのスキームを表す url'
- ),
- array(
- // 二番目以降のカテゴリのデータ
- )
- ),
- // 任意、フィードエントリのエンクロージャの一覧
- 'enclosure' => array(
- array(
- // 必須
- 'url' => 'リンクされたエンクロージャの url',
- // 任意
- 'type' => 'エンクロージャの mime タイプ',
- 'length' => 'リンクされたコンテンツのサイズを表すオクテット数'
- ),
- array(
- // 二番目以降のエンクロージャのデータ
- )
- )
- ),
- array(
- // 二番目のエントリ以降のデータ
- )
- )
- );
- ]]></programlisting>
- <para>
- 参考
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <acronym>RSS</acronym> 2.0 の仕様: <ulink url="http://blogs.law.harvard.edu/tech/rss">RSS 2.0</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- Atom の仕様: <ulink url="http://tools.ietf.org/html/rfc4287">RFC 4287</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- <acronym>WFW</acronym> の仕様: <ulink url="http://wellformedweb.org/news/wfw_namespace_elements">Well
- Formed Web</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- iTunes の仕様: <ulink
- url="http://www.apple.com/itunes/store/podcaststechspecs.html">iTunes
- Technical Specifications</ulink>
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.feed.importing.custom.importbuilder">
- <title>独自のデータソースの読み込み</title>
- <para>
- <classname>Zend_Feed_Builder_Interface</classname> を実装した任意のデータソースから、
- <classname>Zend_Feed</classname> のインスタンスを作成できます。単に
- <methodname>getHeader()</methodname> メソッドおよび <methodname>getEntries()</methodname>
- メソッドを実装するだけで、自分で作成したオブジェクトが
- <methodname>Zend_Feed::importBuilder()</methodname> で使用できるようになります。
- <classname>Zend_Feed_Builder</classname> は、これを単純に実装したものです。
- コンストラクタで配列を受け取り、ちょっとした検証を行い、
- そして <methodname>importBuilder()</methodname> メソッドで使用できるようにします。
- <methodname>getHeader()</methodname> メソッドは <classname>Zend_Feed_Builder_Header</classname>
- のインスタンスを返さなければなりません。また <methodname>getEntries()</methodname> は
- <classname>Zend_Feed_Builder_Entry</classname> のインスタンスの配列を返さなければなりません。
- </para>
- <note>
- <para>
- <classname>Zend_Feed_Builder</classname> は、使用法を説明するための具体的な実装例です。
- 実際に使用する際には、
- <classname>Zend_Feed_Builder_Interface</classname>
- を実装した独自のクラスを作成することを推奨します。
- </para>
- </note>
- <para>
- これが、<methodname>Zend_Feed::importBuilder()</methodname> の使用例です。
- </para>
- <programlisting language="php"><![CDATA[
- // 独自のビルダソースからフィードを読み込みます
- $atomFeedFromArray =
- Zend_Feed::importBuilder(new Zend_Feed_Builder($array));
- // この行は、上と同じ意味です。
- // デフォルトで Zend_Feed_Atom のインスタンスを返します
- $atomFeedFromArray =
- Zend_Feed::importBuilder(new Zend_Feed_Builder($array), 'atom');
- // 独自のビルダ配列から rss フィードを読み込みます
- $rssFeedFromArray =
- Zend_Feed::importBuilder(new Zend_Feed_Builder($array), 'rss');
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.feed.importing.custom.dump">
- <title>フィードの内容の出力</title>
- <para>
- <classname>Zend_Feed_Abstract</classname> インスタンスの内容を出力するには、
- <code>send()</code> メソッドあるいは <code>saveXml()</code> メソッドを使用します。
- </para>
- <programlisting language="php"><![CDATA[
- assert($feed instanceof Zend_Feed_Abstract);
- // フィードを標準出力に出力します
- print $feed->saveXML();
- // http ヘッダを送信し、フィードを出力します
- $feed->send();
- ]]></programlisting>
- </sect3>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|