Mercurial > hg > isophonics-drupal-site
diff vendor/zendframework/zend-feed/doc/book/consuming-rss.md @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/zendframework/zend-feed/doc/book/consuming-rss.md Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,99 @@ +# Consuming RSS Feeds + +## Reading a feed + +To read an RSS feed, pass its URL to `Zend\Feed\Reader\Reader::import()`: + +```php +$channel = Zend\Feed\Reader\Reader::import('http://rss.example.com/channelName'); +``` + +> ## Importing requires an HTTP client +> +> To import a feed, you will need to have an [HTTP client](zend.feed.http-clients) +> available. +> +> If you are not using zend-http, you will need to inject `Reader` with the HTTP +> client. See the [section on providing a client to Reader](http-clients.md#providing-a-client-to-reader). + +If any errors occur fetching the feed, a +`Zend\Feed\Reader\Exception\RuntimeException` will be thrown. + +## Get properties + +Once you have a feed object, you can access any of the standard RSS channel +properties via the various instance getter methods: + +```php +echo $channel->getTitle(); +echo $channel->getAuthor(); +// etc. +``` + +If channel properties have attributes, the getter method will return a key/value +pair, where the key is the attribute name, and the value is the attribute value. + +```php +$author = $channel->getAuthor(); +echo $author['name']; +``` + +Most commonly, you'll want to loop through the feed and do something with its +entries. `Zend\Feed\Reader\Feed\Rss` internally converts all entries to a +`Zend\Feed\Reader\Entry\Rss` instance. Entry properties, similarly to channel +properties, can be accessed via getter methods, such as `getTitle`, +`getDescription`, etc. + +An example of printing all titles of articles in a channel is: + +```php +foreach ($channel as $item) { + echo $item->getTitle() . "\n"; +} +``` + +If you are not familiar with RSS, here are the standard elements you can expect +to be available in an RSS channel and in individual RSS items (entries). + +Required channel elements: + +- `title`: The name of the channel. +- `link`: The URL of the web site corresponding to the channel. +- `description`: A sentence (or more) describing the channel. + +Common optional channel elements: + +- `pubDate`: The publication date of this set of content, in RFC 822 date + format. +- `language`: The language the channel is written in. +- `category`: One or more (specified by multiple tags) categories the channel + belongs to. + +RSS `<item>` elements do not have any strictly required elements. However, +either `title` or `description` must be present. + +Common item elements: + +- `title`: The title of the item. +- `link`: The URL of the item. +- `description`: A synopsis of the item. +- `author`: The author's email address. +- `category`: One more categories that the item belongs to. +- `comments`: URL of comments relating to this item. +- `pubDate`: The date the item was published, in RFC 822 date format. + +In your code you can always test to see if an element is non-empty by calling +the getter: + +```php +if ($item->getPropname()) { + // ... proceed. +} +``` + +Where relevant, `Zend\Feed` supports a number of common RSS extensions including +Dublin Core, Atom (inside RSS); the Content, Slash, Syndication, +Syndication/Thread extensions; as well as several others. + +Please see the official [RSS 2.0 specification](http://cyber.law.harvard.edu/rss/rss.html) +for further information.