Introduction to Zend Framework

 Learning Zend Framework

appendix

 Zend Framework Reference


  •  Zend_Gdata
  •  Zend_Http
  •  Zend_InfoCard
  •  Zend_Json
  •  Zend_Layout
  •  Zend_Ldap
  •  Zend_Loader
  •  Zend_Locale
  •  Zend_Log
  •  Zend_Mail
  •  Zend_Markup
  •  Zend_Measure
  •  Zend_Memory
  •  Zend_Mime
  •  Zend_Navigation
  •  Zend_Oauth
  •  Zend_OpenId
  •  Zend_Paginator
  •  Zend_Pdf
  •  Zend_ProgressBar
  •  Zend_Queue
  •  Zend_Reflection
  •  Zend_Registry
  •  Zend_Rest

  •  Zend_Search_Lucene
  •  Zend_Serializer
  •  Zend_Server
  •  Zend_Service
  •  Zend_Session
  •  Zend_Soap
  •  Zend_Tag
  •  Zend_Test
  •  Zend_Text
  •  Zend_TimeSync
  •  Zend_Tool
  •  Zend_Tool_Framework
  •  Zend_Tool_Project
  •  Zend_Translate
  •  Zend_Uri
  •  Zend_Validate
  •  Zend_Version
  •  Zend_View
  •  Zend_Wildfire
  •  Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Update 2011-11-16 - Revision 24438 - Version ZF 1.11.x

    32.2. Importing Feeds

    Zend_Feed enables developers to retrieve feeds very easily. If you know the URI of a feed, simply use the Zend_Feed::import() method:

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

    You can also use Zend_Feed to fetch the contents of a feed from a file or the contents of a PHP string variable:

    // importing a feed from a text file
    $feedFromFile Zend_Feed::importFile('feed.xml');

    // importing a feed from a PHP string variable
    $feedFromPHP Zend_Feed::importString($feedString);

    In each of the examples above, an object of a class that extends Zend_Feed_Abstract is returned upon success, depending on the type of the feed. If an RSS feed were retrieved via one of the import methods above, then a Zend_Feed_Rss object would be returned. On the other hand, if an Atom feed were imported, then a Zend_Feed_Atom object is returned. The import methods will also throw a Zend_Feed_Exception object upon failure, such as an unreadable or malformed feed.

    32.2.1. Custom feeds

    Zend_Feed enables developers to create custom feeds very easily. You just have to create an array and to import it with Zend_Feed. This array can be imported with Zend_Feed::importArray() or with Zend_Feed::importBuilder(). In this last case the array will be computed on the fly by a custom data source implementing Zend_Feed_Builder_Interface.

    32.2.1.1. Importing a custom array

    // importing a feed from an array
    $atomFeedFromArray Zend_Feed::importArray($array);

    // the following line is equivalent to the above;
    // by default a Zend_Feed_Atom instance is returned
    $atomFeedFromArray Zend_Feed::importArray($array'atom');

    // importing a rss feed from an array
    $rssFeedFromArray Zend_Feed::importArray($array'rss');

    The format of the array must conform to this structure:

    array(
        
    //required
        
    'title' => 'title of the feed',
        
    'link'  => 'canonical url to the feed',

        
    // optional
        
    'lastUpdate' => 'timestamp of the update date',
        
    'published'  => 'timestamp of the publication date',

        
    // required
        
    'charset' => 'charset of the textual data',

        
    // optional
        
    'description' => 'short description of the feed',
        
    'author'      => 'author/publisher of the feed',
        
    'email'       => 'email of the author',

        
    // optional, ignored if atom is used
        
    'webmaster' => 'email address for person responsible '
                    
    .  'for technical issues',

        
    // optional
        
    'copyright' => 'copyright notice',
        
    'image'     => 'url to image',
        
    'generator' => 'generator',
        
    'language'  => 'language the feed is written in',

        
    // optional, ignored if atom is used
        
    'ttl'    => 'how long in minutes a feed can be cached '
                 
    .  'before refreshing',
        
    'rating' => 'The PICS rating for the channel.',

        
    // optional, ignored if atom is used
        // a cloud to be notified of updates
        
    'cloud'       => array(
            
    // required
            
    'domain' => 'domain of the cloud, e.g. rpc.sys.com',

            
    // optional, defaults to 80
            
    'port' => 'port to connect to',

            
    // required
            
    'path'              => 'path of the cloud, e.g. /RPC2',
            
    'registerProcedure' => 'procedure to call, e.g. myCloud.rssPlsNotify',
            
    'protocol'          => 'protocol to use, e.g. soap or xml-rpc'
        
    ),

        
    // optional, ignored if atom is used
        // a text input box that can be displayed with the feed
        
    'textInput'   => array(
            
    // required
            
    'title'       => 'label of the Submit button in the text input area',
            
    'description' => 'explains the text input area',
            
    'name'        => 'the name of the text object in the text input area',
            
    'link'        => 'URL of the CGI script processing text input requests'
        
    ),

        
    // optional, ignored if atom is used
        // Hint telling aggregators which hours they can skip
        
    'skipHours' => array(
            
    // up to 24 rows whose value is a number between 0 and 23
            // e.g 13 (1pm)
            
    'hour in 24 format'
        
    ),

        
    // optional, ignored if atom is used
        // Hint telling aggregators which days they can skip
        
    'skipDays ' => array(
            
    // up to 7 rows whose value is
            // Monday, Tuesday, Wednesday, Thursday, Friday, Saturday or Sunday
            // e.g Monday
            
    'a day to skip'
        
    ),

        
    // optional, ignored if atom is used
        // Itunes extension data
        
    'itunes' => array(
            
    // optional, default to the main author value
            
    'author' => 'Artist column',

            
    // optional, default to the main author value
            // Owner of the podcast
            
    'owner' => array(
                
    'name'  => 'name of the owner',
                
    'email' => 'email of the owner'
            
    ),

            
    // optional, default to the main image value
            
    'image' => 'album/podcast art',

            
    // optional, default to the main description value
            
    'subtitle' => 'short description',
            
    'summary'  => 'longer description',

            
    // optional
            
    'block' => 'Prevent an episode from appearing (yes|no)',

            
    // required, Category column and in iTunes Music Store Browse
            
    'category' => array(
                
    // up to 3 rows
                
    array(
                    
    // required
                    
    'main' => 'main category',

                    
    // optional
                    
    'sub'  => 'sub category'
                
    )
            ),

            
    // optional
            
    'explicit'     => 'parental advisory graphic (yes|no|clean)',
            
    'keywords'     => 'a comma separated list of 12 keywords maximum',
            
    'new-feed-url' => 'used to inform iTunes of new feed URL location'
        
    ),

        
    'entries' => array(
            array(
                
    //required
                
    'title' => 'title of the feed entry',
                
    'link'  => 'url to a feed entry',

                
    // required, only text, no html
                
    'description' => 'short version of a feed entry',

                
    // optional
                
    'guid' => 'id of the article, '
                       
    .  'if not given link value will used',

                
    // optional, can contain html
                
    'content' => 'long version',

                
    // optional
                
    'lastUpdate' => 'timestamp of the publication date',
                
    'comments'   => 'comments page of the feed entry',
                
    'commentRss' => 'the feed url of the associated comments',

                
    // optional, original source of the feed entry
                
    'source' => array(
                    
    // required
                    
    'title' => 'title of the original source',
                    
    'url'   => 'url of the original source'
                
    ),

                
    // optional, list of the attached categories
                
    'category' => array(
                    array(
                        
    // required
                        
    'term' => 'first category label',

                        
    // optional
                        
    'scheme' => 'url that identifies a categorization scheme'
                    
    ),

                    array(
                        
    // data for the second category and so on
                    
    )
                ),

                
    // optional, list of the enclosures of the feed entry
                
    'enclosure'    => array(
                    array(
                        
    // required
                        
    'url' => 'url of the linked enclosure',

                        
    // optional
                        
    'type' => 'mime type of the enclosure',
                        
    'length' => 'length of the linked content in octets'
                    
    ),

                    array(
                        
    //data for the second enclosure and so on
                    
    )
                )
            ),

            array(
                
    //data for the second entry and so on
            
    )
        )
    );

    References:

    32.2.1.2. Importing a custom data source

    You can create a Zeed_Feed instance from any data source implementing Zend_Feed_Builder_Interface. You just have to implement the getHeader() and getEntries() methods to be able to use your object with Zend_Feed::importBuilder(). As a simple reference implementation, you can use Zend_Feed_Builder, which takes an array in its constructor, performs some minor validation, and then can be used in the importBuilder() method. The getHeader() method must return an instance of Zend_Feed_Builder_Header, and getEntries() must return an array of Zend_Feed_Builder_Entry instances.

    [Note] Note

    Zend_Feed_Builder serves as a concrete implementation to demonstrate the usage. Users are encouraged to make their own classes to implement Zend_Feed_Builder_Interface.

    Here is an example of Zend_Feed::importBuilder() usage:

    // importing a feed from a custom builder source
    $atomFeedFromArray =
        
    Zend_Feed::importBuilder(new Zend_Feed_Builder($array));

    // the following line is equivalent to the above;
    // by default a Zend_Feed_Atom instance is returned
    $atomFeedFromArray =
        
    Zend_Feed::importBuilder(new Zend_Feed_Builder($array), 'atom');

    // importing a rss feed from a custom builder array
    $rssFeedFromArray =
        
    Zend_Feed::importBuilder(new Zend_Feed_Builder($array), 'rss');

    32.2.1.3. Dumping the contents of a feed

    To dump the contents of a Zend_Feed_Abstract instance, you may use send() or saveXml() methods.

    assert($feed instanceof Zend_Feed_Abstract);

    // dump the feed to standard output
    print $feed->saveXML();

    // send http headers and dump the feed
    $feed->send();
    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...