Chris@0: Extension\Atom\Entry::class, Chris@0: 'atomEntry' => Extension\Atom\Entry::class, Chris@0: 'AtomEntry' => Extension\Atom\Entry::class, Chris@12: 'Atom\Entry' => Extension\Atom\Entry::class, Chris@0: 'atomfeed' => Extension\Atom\Feed::class, Chris@0: 'atomFeed' => Extension\Atom\Feed::class, Chris@0: 'AtomFeed' => Extension\Atom\Feed::class, Chris@12: 'Atom\Feed' => Extension\Atom\Feed::class, Chris@0: 'contententry' => Extension\Content\Entry::class, Chris@0: 'contentEntry' => Extension\Content\Entry::class, Chris@0: 'ContentEntry' => Extension\Content\Entry::class, Chris@12: 'Content\Entry' => Extension\Content\Entry::class, Chris@0: 'creativecommonsentry' => Extension\CreativeCommons\Entry::class, Chris@0: 'creativeCommonsEntry' => Extension\CreativeCommons\Entry::class, Chris@0: 'CreativeCommonsEntry' => Extension\CreativeCommons\Entry::class, Chris@12: 'CreativeCommons\Entry' => Extension\CreativeCommons\Entry::class, Chris@0: 'creativecommonsfeed' => Extension\CreativeCommons\Feed::class, Chris@0: 'creativeCommonsFeed' => Extension\CreativeCommons\Feed::class, Chris@0: 'CreativeCommonsFeed' => Extension\CreativeCommons\Feed::class, Chris@12: 'CreativeCommons\Feed' => Extension\CreativeCommons\Feed::class, Chris@0: 'dublincoreentry' => Extension\DublinCore\Entry::class, Chris@0: 'dublinCoreEntry' => Extension\DublinCore\Entry::class, Chris@0: 'DublinCoreEntry' => Extension\DublinCore\Entry::class, Chris@12: 'DublinCore\Entry' => Extension\DublinCore\Entry::class, Chris@0: 'dublincorefeed' => Extension\DublinCore\Feed::class, Chris@0: 'dublinCoreFeed' => Extension\DublinCore\Feed::class, Chris@0: 'DublinCoreFeed' => Extension\DublinCore\Feed::class, Chris@12: 'DublinCore\Feed' => Extension\DublinCore\Feed::class, Chris@16: 'googleplaypodcastentry' => Extension\GooglePlayPodcast\Entry::class, Chris@16: 'googlePlayPodcastEntry' => Extension\GooglePlayPodcast\Entry::class, Chris@16: 'GooglePlayPodcastEntry' => Extension\GooglePlayPodcast\Entry::class, Chris@16: 'GooglePlayPodcast\Entry' => Extension\GooglePlayPodcast\Entry::class, Chris@16: 'googleplaypodcastfeed' => Extension\GooglePlayPodcast\Feed::class, Chris@16: 'googlePlayPodcastFeed' => Extension\GooglePlayPodcast\Feed::class, Chris@16: 'GooglePlayPodcastFeed' => Extension\GooglePlayPodcast\Feed::class, Chris@16: 'GooglePlayPodcast\Feed' => Extension\GooglePlayPodcast\Feed::class, Chris@0: 'podcastentry' => Extension\Podcast\Entry::class, Chris@0: 'podcastEntry' => Extension\Podcast\Entry::class, Chris@0: 'PodcastEntry' => Extension\Podcast\Entry::class, Chris@12: 'Podcast\Entry' => Extension\Podcast\Entry::class, Chris@0: 'podcastfeed' => Extension\Podcast\Feed::class, Chris@0: 'podcastFeed' => Extension\Podcast\Feed::class, Chris@0: 'PodcastFeed' => Extension\Podcast\Feed::class, Chris@12: 'Podcast\Feed' => Extension\Podcast\Feed::class, Chris@0: 'slashentry' => Extension\Slash\Entry::class, Chris@0: 'slashEntry' => Extension\Slash\Entry::class, Chris@0: 'SlashEntry' => Extension\Slash\Entry::class, Chris@12: 'Slash\Entry' => Extension\Slash\Entry::class, Chris@0: 'syndicationfeed' => Extension\Syndication\Feed::class, Chris@0: 'syndicationFeed' => Extension\Syndication\Feed::class, Chris@0: 'SyndicationFeed' => Extension\Syndication\Feed::class, Chris@12: 'Syndication\Feed' => Extension\Syndication\Feed::class, Chris@0: 'threadentry' => Extension\Thread\Entry::class, Chris@0: 'threadEntry' => Extension\Thread\Entry::class, Chris@0: 'ThreadEntry' => Extension\Thread\Entry::class, Chris@12: 'Thread\Entry' => Extension\Thread\Entry::class, Chris@0: 'wellformedwebentry' => Extension\WellFormedWeb\Entry::class, Chris@0: 'wellFormedWebEntry' => Extension\WellFormedWeb\Entry::class, Chris@0: 'WellFormedWebEntry' => Extension\WellFormedWeb\Entry::class, Chris@12: 'WellFormedWeb\Entry' => Extension\WellFormedWeb\Entry::class, Chris@0: ]; Chris@0: Chris@0: /** Chris@0: * Factories for default set of extension classes Chris@0: * Chris@0: * @var array Chris@0: */ Chris@0: protected $factories = [ Chris@0: Extension\Atom\Entry::class => InvokableFactory::class, Chris@0: Extension\Atom\Feed::class => InvokableFactory::class, Chris@0: Extension\Content\Entry::class => InvokableFactory::class, Chris@0: Extension\CreativeCommons\Entry::class => InvokableFactory::class, Chris@0: Extension\CreativeCommons\Feed::class => InvokableFactory::class, Chris@0: Extension\DublinCore\Entry::class => InvokableFactory::class, Chris@0: Extension\DublinCore\Feed::class => InvokableFactory::class, Chris@16: Extension\GooglePlayPodcast\Entry::class => InvokableFactory::class, Chris@16: Extension\GooglePlayPodcast\Feed::class => InvokableFactory::class, Chris@0: Extension\Podcast\Entry::class => InvokableFactory::class, Chris@0: Extension\Podcast\Feed::class => InvokableFactory::class, Chris@0: Extension\Slash\Entry::class => InvokableFactory::class, Chris@0: Extension\Syndication\Feed::class => InvokableFactory::class, Chris@0: Extension\Thread\Entry::class => InvokableFactory::class, Chris@0: Extension\WellFormedWeb\Entry::class => InvokableFactory::class, Chris@0: // Legacy (v2) due to alias resolution; canonical form of resolved Chris@0: // alias is used to look up the factory, while the non-normalized Chris@0: // resolved alias is used as the requested name passed to the factory. Chris@0: 'zendfeedreaderextensionatomentry' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensionatomfeed' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensioncontententry' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensioncreativecommonsentry' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensioncreativecommonsfeed' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensiondublincoreentry' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensiondublincorefeed' => InvokableFactory::class, Chris@16: 'zendfeedreaderextensiongoogleplaypodcastentry' => InvokableFactory::class, Chris@16: 'zendfeedreaderextensiongoogleplaypodcastfeed' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensionpodcastentry' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensionpodcastfeed' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensionslashentry' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensionsyndicationfeed' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensionthreadentry' => InvokableFactory::class, Chris@0: 'zendfeedreaderextensionwellformedwebentry' => InvokableFactory::class, Chris@0: ]; Chris@0: Chris@0: /** Chris@0: * Do not share instances (v2) Chris@0: * Chris@0: * @var bool Chris@0: */ Chris@0: protected $shareByDefault = false; Chris@0: Chris@0: /** Chris@0: * Do not share instances (v3) Chris@0: * Chris@0: * @var bool Chris@0: */ Chris@0: protected $sharedByDefault = false; Chris@0: Chris@0: /** Chris@0: * Validate the plugin Chris@0: * Chris@0: * Checks that the extension loaded is of a valid type. Chris@0: * Chris@0: * @param mixed $plugin Chris@0: * @return void Chris@0: * @throws Exception\InvalidArgumentException if invalid Chris@0: */ Chris@0: public function validate($plugin) Chris@0: { Chris@0: if ($plugin instanceof Extension\AbstractEntry Chris@0: || $plugin instanceof Extension\AbstractFeed Chris@0: ) { Chris@0: // we're okay Chris@0: return; Chris@0: } Chris@0: Chris@0: throw new InvalidServiceException(sprintf( Chris@0: 'Plugin of type %s is invalid; must implement %s\Extension\AbstractFeed ' Chris@0: . 'or %s\Extension\AbstractEntry', Chris@0: (is_object($plugin) ? get_class($plugin) : gettype($plugin)), Chris@0: __NAMESPACE__, Chris@0: __NAMESPACE__ Chris@0: )); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Validate the plugin (v2) Chris@0: * Chris@0: * @param mixed $plugin Chris@0: * @return void Chris@0: * @throws Exception\InvalidArgumentException if invalid Chris@0: */ Chris@0: public function validatePlugin($plugin) Chris@0: { Chris@0: try { Chris@0: $this->validate($plugin); Chris@0: } catch (InvalidServiceException $e) { Chris@0: throw new Exception\InvalidArgumentException(sprintf( Chris@0: 'Plugin of type %s is invalid; must implement %s\Extension\AbstractFeed ' Chris@0: . 'or %s\Extension\AbstractEntry', Chris@0: (is_object($plugin) ? get_class($plugin) : gettype($plugin)), Chris@0: __NAMESPACE__, Chris@0: __NAMESPACE__ Chris@0: )); Chris@0: } Chris@0: } Chris@0: }