comparison vendor/zendframework/zend-feed/src/Reader/StandaloneExtensionManager.php @ 2:5311817fb629

Theme updates
author Chris Cannam
date Tue, 10 Jul 2018 13:19:18 +0000
parents c75dbcec494b
children
comparison
equal deleted inserted replaced
1:0b0e5f3b1e83 2:5311817fb629
7 * @license http://framework.zend.com/license/new-bsd New BSD License 7 * @license http://framework.zend.com/license/new-bsd New BSD License
8 */ 8 */
9 9
10 namespace Zend\Feed\Reader; 10 namespace Zend\Feed\Reader;
11 11
12 use Zend\Feed\Reader\Exception\InvalidArgumentException;
13
12 class StandaloneExtensionManager implements ExtensionManagerInterface 14 class StandaloneExtensionManager implements ExtensionManagerInterface
13 { 15 {
14 private $extensions = [ 16 private $extensions = [
15 'Atom\Entry' => 'Zend\Feed\Reader\Extension\Atom\Entry', 17 'Atom\Entry' => Extension\Atom\Entry::class,
16 'Atom\Feed' => 'Zend\Feed\Reader\Extension\Atom\Feed', 18 'Atom\Feed' => Extension\Atom\Feed::class,
17 'Content\Entry' => 'Zend\Feed\Reader\Extension\Content\Entry', 19 'Content\Entry' => Extension\Content\Entry::class,
18 'CreativeCommons\Entry' => 'Zend\Feed\Reader\Extension\CreativeCommons\Entry', 20 'CreativeCommons\Entry' => Extension\CreativeCommons\Entry::class,
19 'CreativeCommons\Feed' => 'Zend\Feed\Reader\Extension\CreativeCommons\Feed', 21 'CreativeCommons\Feed' => Extension\CreativeCommons\Feed::class,
20 'DublinCore\Entry' => 'Zend\Feed\Reader\Extension\DublinCore\Entry', 22 'DublinCore\Entry' => Extension\DublinCore\Entry::class,
21 'DublinCore\Feed' => 'Zend\Feed\Reader\Extension\DublinCore\Feed', 23 'DublinCore\Feed' => Extension\DublinCore\Feed::class,
22 'Podcast\Entry' => 'Zend\Feed\Reader\Extension\Podcast\Entry', 24 'GooglePlayPodcast\Entry' => Extension\GooglePlayPodcast\Entry::class,
23 'Podcast\Feed' => 'Zend\Feed\Reader\Extension\Podcast\Feed', 25 'GooglePlayPodcast\Feed' => Extension\GooglePlayPodcast\Feed::class,
24 'Slash\Entry' => 'Zend\Feed\Reader\Extension\Slash\Entry', 26 'Podcast\Entry' => Extension\Podcast\Entry::class,
25 'Syndication\Feed' => 'Zend\Feed\Reader\Extension\Syndication\Feed', 27 'Podcast\Feed' => Extension\Podcast\Feed::class,
26 'Thread\Entry' => 'Zend\Feed\Reader\Extension\Thread\Entry', 28 'Slash\Entry' => Extension\Slash\Entry::class,
27 'WellFormedWeb\Entry' => 'Zend\Feed\Reader\Extension\WellFormedWeb\Entry', 29 'Syndication\Feed' => Extension\Syndication\Feed::class,
30 'Thread\Entry' => Extension\Thread\Entry::class,
31 'WellFormedWeb\Entry' => Extension\WellFormedWeb\Entry::class,
28 ]; 32 ];
29 33
30 /** 34 /**
31 * Do we have the extension? 35 * Do we have the extension?
32 * 36 *
47 public function get($extension) 51 public function get($extension)
48 { 52 {
49 $class = $this->extensions[$extension]; 53 $class = $this->extensions[$extension];
50 return new $class(); 54 return new $class();
51 } 55 }
56
57 /**
58 * Add an extension.
59 *
60 * @param string $name
61 * @param string $class
62 */
63 public function add($name, $class)
64 {
65 if (is_string($class)
66 && (
67 is_a($class, Extension\AbstractEntry::class, true)
68 || is_a($class, Extension\AbstractFeed::class, true)
69 )
70 ) {
71 $this->extensions[$name] = $class;
72 return;
73 }
74
75 throw new InvalidArgumentException(sprintf(
76 'Plugin of type %s is invalid; must implement %2$s\Extension\AbstractFeed '
77 . 'or %2$s\Extension\AbstractEntry',
78 $class,
79 __NAMESPACE__
80 ));
81 }
82
83 /**
84 * Remove an extension.
85 *
86 * @param string $name
87 */
88 public function remove($name)
89 {
90 unset($this->extensions[$name]);
91 }
52 } 92 }