Retrieving information for specific entries or items (depending on
whether you speak Atom or RSS) is identical to feed level data.
Accessing entries is simply a matter of iterating over a Feed object
or using the SPL Iterator interface Feed
objects implement and calling the appropriate method on each.
Table 68. Entry Level API Methods
getId() |
Returns a unique ID for the current entry. |
getTitle() |
Returns the title of the current entry. |
getDescription() |
Returns a description of the current entry. |
getLink() |
Returns a URI to the HTML version of the current entry. |
getPermaLink() |
Returns the permanent link to the current entry. In most cases,
this is the same as using getLink().
|
getAuthors() |
Returns an object of type
Zend_Feed_Reader_Collection_Author which is an
ArrayObject whose elements are each simple arrays
containing any combination of the keys "name", "email" and "uri". Where
irrelevant to the source data, some of these keys may be omitted.
|
getAuthor(integer $index = 0) |
Returns either the first author known, or with the
optional $index parameter any specific
index on the array of Authors as described above (returning
NULL if an invalid index).
|
getDateCreated() |
Returns the date on which the current entry was created. Generally only applicable to Atom where it represents the date the resource described by an Atom 1.0 document was created. |
getDateModified() |
Returns the date on which the current entry was last modified |
getContent() |
Returns the content of the current entry (this has any entities reversed if possible assuming the content type is HTML). The description is returned if a separate content element does not exist. |
getEnclosure() |
Returns an array containing the value of all attributes from a multi-media <enclosure> element including as array keys: url, length, type. In accordance with the RSS Best Practices Profile of the RSS Advisory Board, no support is offers for multiple enclosures since such support forms no part of the RSS specification. |
getCommentCount() |
Returns the number of comments made on this entry at the time the feed was last generated |
getCommentLink() |
Returns a URI pointing to the HTML page where comments can be made on this entry |
getCommentFeedLink([string $type =
'atom'|'rss'])
|
Returns a URI pointing to a feed of the provided type containing all comments for this entry (type defaults to Atom/RSS depending on current feed type). |
getCategories() |
Returns a Zend_Feed_Reader_Collection_Category
object containing the details of any categories associated with the
entry. The supported fields include "term" (the machine readable
category name), "scheme" (the categorisation scheme and domain for this
category), and "label" (a HTML decoded human readable
category name). Where any of the three fields are absent from the field,
they are either set to the closest available alternative or, in the case
of "scheme", set to NULL.
|
The extended API for entries is identical to that for feeds with the exception of the Iterator methods which are not needed here.
Caution
There is often confusion over the concepts of modified and
created dates. In Atom, these are two clearly defined concepts
(so knock yourself out) but in RSS they are vague.
RSS 2.0
defines a single <pubDate> element
which typically refers to the date this entry was published,
i.e. a creation date of sorts. This is not always the case, and
it may change with updates or not. As a result, if you really
want to check whether an entry has changed, don't rely on the
results of getDateModified(). Instead,
consider tracking the MD5 hash of three other elements
concatenated, e.g. using getTitle(),
getDescription() and
getContent(). If the entry was truly
updated, this hash computation will give a different result than
previously saved hashes for the same entry. This is obviously
content oriented, and will not assist in detecting changes to other
relevant elements. Atom feeds should not require such steps.
Further muddying the
waters, dates in feeds may follow different standards. Atom and
Dublin Core dates should follow ISO 8601,
and RSS dates should
follow RFC 822 or RFC 2822
which is also common. Date methods
will throw an exception if Zend_Date
cannot load the date string using one of the above standards, or the
PHP recognised possibilities for RSS dates.
Warning
The values returned from these methods are not validated. This
means users must perform validation on all retrieved data
including the filtering of any HTML such as from
getContent() before it is output from
your application. Remember that most feeds come from external
sources, and therefore the default assumption should be that
they cannot be trusted.
Table 69. Extended Entry Level API Methods
getDomDocument() |
Returns the parent DOMDocument object for the entire feed (not just the current entry) |
getElement() |
Returns the current entry level DOMElement object |
getXpath() |
Returns the DOMXPath object used internally to run queries on the DOMDocument object (this includes core and Extension namespaces pre-registered) |
getXpathPrefix() |
Returns the valid DOM path prefix prepended to all XPath queries matching the entry being queried |
getEncoding() |
Returns the encoding of the source XML document (note: this cannot account for errors such as the server sending documents in a different encoding). The default encoding applied in the absence of any other is the UTF-8 encoding of Unicode. |
getExtensions() |
Returns an array of all Extension objects loaded for the current entry (note: both feed-level and entry-level Extensions exist, and only entry-level Extensions are returned here). The array keys are in the form {ExtensionName}_Entry. |
getExtension(string $name) |
Returns an Extension object for the entry registered under the provided name. This allows more fine-grained access to Extensions which may otherwise be hidden within the implementation of the standard API methods. |
getType() |
Returns a static class constant (e.g.
Zend_Feed_Reader::TYPE_ATOM_03,
i.e. Atom 0.3) indicating exactly what kind
of feed is being consumed.
|




