NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #5765 most downloaded on Packagist
provides functionality for consuming RSS and Atom feeds
Last release 8 years ago
no release in 18 months
Release timing varies
gaps range from 9 days to 1.1 years
Rarely documented
notes for 12 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
73 releases · first in 2012
Added #96 adds the methods Zend\Feed\Reader\Extension\Podcast\Entry::getTitle() : string and Zend\Feed\Writer\Extension\ITunes\Entry::setTitle(string
Zend\Feed\Reader\Extension\Podcast\Entry::getTitle() : stringZend\Feed\Writer\Extension\ITunes\Entry::setTitle(string $value); these<itunes:title> tags in feeds.#101 deprecates the method Zend\Feed\Writer\Writer::lcfirst(); use the PHP
built-in function instead.
#97 deprecates the classes Zend\Feed\Reader\AbstractEntry (use
Zend\Feed\Reader\Entry\AbstractEntry instead), Zend\Feed\Reader\AbstractFeed (use Zend\Feed\Reader\Feed\AbstractFeed instead), and
Zend\Feed\Reader\Collection (use Zend\Feed\Reader\Collection\Author, Zend\Feed\Reader\Collection\Category, or Zend\Feed\Reader\Collection\Collection` instead, based on context).
One column per quarter.
Added Nothing. Changed Nothing. Deprecated Nothing. Removed Nothing. Fixed #99 provides a fix to Zend\Feed\Writer\Renderer\Entry\Rss to ensure that re
Added #94 adds support for PHP 7.3. #91 adds explicit requirements for both ext-dom and ext-libxml to the package. Changed #93 Writer\Feed , Writer\En
#94 adds support for PHP 7.3.
#91 adds explicit requirements for both ext-dom and ext-libxml to the package.
Writer\Feed, Writer\Entry and Writer\Deleted all now acceptDateTimeImmutable instances as an arguments to methods that previously onlyDateTime or Unix Timestamps, such as Writer\Feed::setDateModified().This release modifies how Zend\Feed\Pubsubhubbub\AbstractCallback::_detectCallbackUrl() marshals the request URI. In prior releases, we would attempt
This release modifies how Zend\Feed\Pubsubhubbub\AbstractCallback::_detectCallbackUrl()
marshals the request URI. In prior releases, we would attempt to inspect the
X-Rewrite-Url and X-Original-Url headers, using their values, if present.
These headers are issued by the ISAPI_Rewrite module for IIS (developed by
HeliconTech). However, we have no way of guaranteeing that the module is what
issued the headers, making it an unreliable source for discovering the URI. As
such, we have removed this feature in this release.
The method is not called internally. If you are calling the method from your
own extension and need support for ISAPI_Rewrite, you will need to override
the method as follows:
protected function _detectCallbackUrl()
{
$callbackUrl = null;
if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
$callbackUrl = $_SERVER['HTTP_X_REWRITE_URL'];
}
if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
$callbackUrl = $_SERVER['HTTP_X_ORIGINAL_URL'];
}
return $callbackUrl ?: parent::__detectCallbackUrl();
}If you use an approach such as the above, make sure you also instruct your web
server to strip any incoming headers of the same name so that you can
guarantee they are issued by the ISAPI_Rewrite module.
Both Reader and Writer emit an E_USER_NOTICE when the extension is not found in the extension manager, indicating that the ExtensionManagerInterface i
#81 updates the Zend\Feed\Reader\Reader and Zend\Feed\Writer\Writer classes to
conditionally register their respective "GooglePlayPodcast" extensions only if
their extension managers are aware of it. This is done due to the fact that
existing ExtensionManagerInterface implementations may not register it by
default as the extension did not exist in releases prior to 2.10.0. By having
the registration conditional, we prevent an exception from being raised; users
are not impacted by its absence, as the extension features were not exposed
previously.
Both Reader and Writer emit an E_USER_NOTICE when the extension is not
found in the extension manager, indicating that the
ExtensionManagerInterface implementation should be updated to add entries
for the "GooglePlayPodcast" entry, feed, and/or renderer classes.
Added Nothing. Changed Nothing. Deprecated Nothing. Removed Nothing. Fixed #79 fixes an issue in the setType() method of the iTunes feed renderer wher
setType() method of the iTunes feed renderer whereby it was settingZend\Feed\Reader\Extension\GooglePlayPodcast\Entry
#78 adds support for the Google Play Podcasts 1.0 DTD in both the Reader and
Writer subcomponents. The following new classes provide the support:
Zend\Feed\Reader\Extension\GooglePlayPodcast\EntryZend\Feed\Reader\Extension\GooglePlayPodcast\FeedZend\Feed\Writer\Extension\GooglePlayPodcast\EntryZend\Feed\Writer\Extension\GooglePlayPodcast\FeedZend\Feed\Writer\Extension\GooglePlayPodcast\Renderer\EntryZend\Feed\Writer\Extension\GooglePlayPodcast\Renderer\FeedThe extensions are registered by default with both Zend\Feed\Reader\Reader
and Zend\Feed\Writer\Writer.
#77 adds support for itunes:image for each of:
Zend\Feed\Reader\Extension\Podcast\Entry, via getItunesImage(); previously only the Feed supported it.Zend\Feed\Writer\Extension\ITunes\Entry, via setItunesImage(); previously only the Feed supported it.Zend\Feed\Writer\Extension\ITunes\Renderer\Entry; previously on the Feed supported it.#75 adds Zend\Feed\Writer\Extension\ITunes\Entry::setItunesSeason(), corresponding to the
itunes:season tag, and allowing setting the season number of the episode the
entry represents.
#75 adds Zend\Feed\Writer\Extension\ITunes\Entry::setItunesIsClosedCaptioned(), corresponding to the
itunes:isClosedCaptioned tag, and allowing setting the status of closed
captioning support in the episode the entry represents.
#75 adds Zend\Feed\Writer\Extension\ITunes\Entry::setItunesEpisodeType(), corresponding to the
itunes:episodeType tag, and allowing setting the type of episode the entry represents
(one of "full", "trailer", or "bonus", and defaulting to "full").
#75 adds Zend\Feed\Writer\Extension\ITunes\Entry::setEpisode(), corresponding to the
itunes:episode tag, and allowing setting the number of the episode the entry represents.
#75 adds Zend\Feed\Writer\Extension\ITunes\Feed::setItunesComplete(), corresponding to the
itunes:complete tag. It allows setting a boolean flag, indicating whether or not the
podcast is complete (will not air new episodes).
#75 adds Zend\Feed\Writer\Extension\ITunes\Feed::setItunesType(), corresponding to the
itunes:type tag, and allowing setting the podcast type (one of "serial" or "episodic").
#75 adds Zend\Feed\Reader\Extension\Podcast\Entry::getEpisodeType(), corresponding to the
itunes:episodeType tag, and returning the type of episode the entry represents
(one of "full", "trailer", or "bonus", and defaulting to "full").
#75 adds Zend\Feed\Reader\Extension\Podcast\Entry::getSeason(), corresponding to the
itunes:season tag, and returning the season number of the episode the entry represents.
#75 adds Zend\Feed\Reader\Extension\Podcast\Entry::isClsoedCaptioned(), corresponding to the
itunes:isClosedCaptioned tag, and returning the status of closed captioning
in the episode the entry represents.
#75 adds Zend\Feed\Reader\Extension\Podcast\Entry::getEpisode(), corresponding to the
itunes:episode tag, and returning the number of the episode the entry represents.
#75 adds Zend\Feed\Reader\Extension\Podcast\Feed::isComplete(), corresponding to the
itunes:complete tag. It returns a boolean, indicating whether or not the podcast is
complete (will not air new episodes).
#75 adds Zend\Feed\Reader\Extension\Podcast\Feed::getPodcastType(), corresponding to the
itunes:type tag, and providing the podcast type (one of "serial" or "episodic", defaulting
to the latter).
Zend\Feed\Writer\Extension\ITunes\Feed::setItunesImage() toZend\Feed\Reader\Extension\Podcast\Entry::getKeywords()Zend\Feed\Reader\Extension\Podcast\Feed::getKeywords()Zend\Feed\Writer\Extension\ITunes\Entry::setKeywords()Zend\Feed\Writer\Extension\ITunes\Feed::setKeywords()Added Nothing. Changed #16 updates the Zend\Feed\Pubsubhubbub\AbstractCallback to no longer use the $GLOBALS['HTTP_RAW_POST_DATA'] value as a fallback
Zend\Feed\Pubsubhubbub\AbstractCallback to no longer use the$GLOBALS['HTTP_RAW_POST_DATA'] value as a fallback when php://input isphp://input could$manager->add($name, $class) will add an extension class using the provided name.
#52 adds support for PHP 7.2
#53 adds a number of additional aliases to the Writer\ExtensionPluginManager to ensure plugins will be pulled as expected.
#63 adds the feed title to the attributes incorporated in the FeedSet instance, per what was already documented.
#55 makes two API additions to the StandaloneExtensionManager implementations of both the reader and writer subcomponents:
$manager->add($name, $class) will add an extension class using the provided name.$manager->remove($name) will remove an existing extension by the provided name.Subscription model where counting was being performed on uncountable data; this ensures the subcomponent will work correctly under PHP 7.2.### Added - #27 adds a documentation chapter demonstrating wrapping a PSR-7 client to use with Zend\Feed\Reader. - #22 adds missing ExtensionManagerIn
Zend\Feed\Reader.### Added - #21 edits, revises, and prepares the documentation for publication at https://zendframework.github.io/zend-feed/ ### Deprecated - Nothing.
Zend\Feed\Reader\Http\HeaderAwareClientInterface, which extends ClientInterface and adds an optional argument to the get() method, array $headers = []
Zend\Feed\Writer\StandaloneExtensionManager, an implementation of
Zend\Feed\Writer\ExtensionManagerInterface that has no dependencies.
Zend\Feed\Writer\ExtensionManager now composes this by default, instead of
Zend\Feed\Writer\ExtensionPluginManager, for managing the various feed and
entry extensions. If you relied on ExtensionPluginManager previously, you
will need to create an instance manually and inject it into the Writer
instance.Zend\Feed\Reader\Http\HeaderAwareClientInterface, which extends
ClientInterface and adds an optional argument to the get() method,
array $headers = []; this argument allows specifying request headers for
the client to send. $headers should have header names for keys, and the
values should be arrays of strings/numbers representing the header values
(if only a single value is necessary, it should be represented as an single
value array).Zend\Feed\Reader\Http\HeaderAwareResponseInterface, which extends
ResponseInterface and adds the method getHeader($name, $default = null).
Clients may return either a ResponseInterface or
HeaderAwareResponseInterface instance.Zend\Feed\Reader\Http\Response, which is an implementation of
HeaderAwareResponseInterface. Its constructor accepts the status code,
body, and, optionally, headers.Zend\Feed\Reader\Http\Psr7ResponseDecorator, which is an implementation of
HeaderAwareResponseInterface. Its constructor accepts a PSR-7 response
instance, and the various methdos then proxy to those methods. This should
make creating wrappers for PSR-7 HTTP clients trivial.Zend\Feed\Reader\Http\ZendHttpClientDecorator, which decorates a
Zend\Http\Client instance, implements HeaderAwareClientInterface, and
returns a Response instance seeded from the zend-http response upon
calling get(). The class exposes a getDecoratedClient() method to allow
retrieval of the decorated zend-http client instance.Reader\FeedSet always generates a URI
with a scheme.Zend\Feed\Reader\Reader:
setHttpClient() now ensures that the passed client is either a
Zend\Feed\Reader\Http\ClientInterface or Zend\Http\Client, raising an
InvalidArgumentException if neither. If a Zend\Http\Client is passed, it
is passed to the constructor of Zend\Feed\Reader\Http\ZendHttpClientDecorator,
and the decorator instance is used.getHttpClient() now always returns a Zend\Feed\Reader\Http\ClientInterface
instance. If no instance is currently registered, it lazy loads a
ZendHttpClientDecorator instance.import() was updated to consume a ClientInterface instance; when caches
are in play, it checks the client against HeaderAwareClientInterface to
determine if it can check for HTTP caching headers, and, if so, to retrieve
them.findFeedLinks() was updated to consume a ClientInterface.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →