Zend Framework の紹介

 Learning Zend Framework

appendix

 Zend Framework リファレンス


  • 第36章 Zend_Gdata
  • 第37章 Zend_Http
  • 第38章 Zend_InfoCard
  • 第39章 Zend_Json
  • 第40章 Zend_Layout
  • 第41章 Zend_Ldap
  • 第42章 Zend_Loader
  • 第43章 Zend_Locale
  • 第44章 Zend_Log
  • 第45章 Zend_Mail
  • 第46章 Zend_Markup
  • 第47章 Zend_Measure
  • 第48章 Zend_Memory
  • 第49章 Zend_Mime
  • 第50章 Zend_Navigation
  • 第51章 Zend_Oauth
  • 第52章 Zend_OpenId
  • 第53章 Zend_Paginator
  • 第54章 Zend_Pdf
  • 第55章 Zend_ProgressBar
  • 第56章 Zend_Queue
  • 第57章 Zend_Reflection
  • 第58章 Zend_Registry
  • 第59章 Zend_Rest

  • 第60章 Zend_Search_Lucene
  • 第61章 Zend_Serializer
  • 第62章 Zend_Server
  • 第63章 Zend_Service
  • 第64章 Zend_Session
  • 第65章 Zend_Soap
  • 第66章 Zend_Tag
  • 第67章 Zend_Test
  • 第68章 Zend_Text
  • 第69章 Zend_TimeSync
  • 第70章 Zend_Tool
  • 第71章 Zend_Tool_Framework
  • 第72章 Zend_Tool_Project
  • 第73章 Zend_Translate
  • 第74章 Zend_Uri
  • 第75章 Zend_Validate
  • 第76章 Zend_Version
  • 第77章 Zend_View
  • 第78章 Zend_Wildfire
  • 第79章 Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 70.6% Update 2010-11-28 - Revision 23415

    32.2. フィードの読み込み

    Zend_Feed を使用すると、フィードの取得が非常に簡単に行えます。 フィードの URI がわかれば、単に Zend_Feed::import() メソッドを使用すればよいのです。

    $feed Zend_Feed::import('http://feeds.example.com/feedName');

    Zend_Feed を使用して、ファイルや PHP 文字列変数からフィードを読み込むこともできます。

    // テキストファイルからフィードを読み込みます
    $feedFromFile Zend_Feed::importFile('feed.xml');

    // PHP の文字列変数からフィードを読み込みます
    $feedFromPHP Zend_Feed::importString($feedString);

    上のすべての例では、成功した場合に返されるのは Zend_Feed_Abstract を実装したクラスのオブジェクトで、 フィードの形式によって異なります。もし上のメソッドで RSS フィードを取得したのなら、 返されるオブジェクトは Zend_Feed_Rss です。一方、Atom フィードを読み込んだのなら Zend_Feed_Atom オブジェクトが返されます。読み込みに失敗したりフィードの形式がおかしかったりした場合は Zend_Feed_Exception がスローされます。

    32.2.1. 独自のフィード

    Zend_Feed を使用すると、独自のフィードを簡単に作成できます。 単に、配列を作成してそれを Zend_Feed で読み込むだけでいいのです。 配列を読み込むには Zend_Feed::importArray() あるいは Zend_Feed::importBuilder() を使用します。 この場合、Zend_Feed_Builder_Interface を実装した独自のデータソースによって配列がその場で算出されます。

    32.2.1.1. 独自の配列の読み込み

    // フィードを配列から読み込みます
    $atomFeedFromArray Zend_Feed::importArray($array);

    // この行は、上と同じ意味です。
    // デフォルトで Zend_Feed_Atom のインスタンスを返します
    $atomFeedFromArray Zend_Feed::importArray($array'atom');

    // rss フィードを配列から読み込みます
    $rssFeedFromArray Zend_Feed::importArray($array'rss');

    配列の書式は、次のような構造になっていなければなりません。

    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(
                
    // 二番目のエントリ以降のデータ
            
    )
        )
    );

    参考

    32.2.1.2. 独自のデータソースの読み込み

    Zend_Feed_Builder_Interface を実装した任意のデータソースから、 Zend_Feed のインスタンスを作成できます。単に getHeader() メソッドおよび getEntries() メソッドを実装するだけで、自分で作成したオブジェクトが Zend_Feed::importBuilder() で使用できるようになります。 Zend_Feed_Builder は、これを単純に実装したものです。 コンストラクタで配列を受け取り、ちょっとした検証を行い、 そして importBuilder() メソッドで使用できるようにします。 getHeader() メソッドは Zend_Feed_Builder_Header のインスタンスを返さなければなりません。また getEntries()Zend_Feed_Builder_Entry のインスタンスの配列を返さなければなりません。

    [注意] 注意

    Zend_Feed_Builder は、使用法を説明するための具体的な実装例です。 実際に使用する際には、 Zend_Feed_Builder_Interface を実装した独自のクラスを作成することを推奨します。

    これが、Zend_Feed::importBuilder() の使用例です。

    // 独自のビルダソースからフィードを読み込みます
    $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');

    32.2.1.3. フィードの内容の出力

    Zend_Feed_Abstract インスタンスの内容を出力するには、 send() メソッドあるいは saveXml() メソッドを使用します。

    assert($feed instanceof Zend_Feed_Abstract);

    // フィードを標準出力に出力します
    print $feed->saveXML();

    // http ヘッダを送信し、フィードを出力します
    $feed->send();
    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...