annotate vendor/zendframework/zend-feed/src/Reader/StandaloneExtensionManager.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents 5311817fb629
children
rev   line source
Chris@0 1 <?php
Chris@0 2 /**
Chris@0 3 * Zend Framework (http://framework.zend.com/)
Chris@0 4 *
Chris@0 5 * @link http://github.com/zendframework/zf2 for the canonical source repository
Chris@0 6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
Chris@0 7 * @license http://framework.zend.com/license/new-bsd New BSD License
Chris@0 8 */
Chris@0 9
Chris@0 10 namespace Zend\Feed\Reader;
Chris@0 11
Chris@2 12 use Zend\Feed\Reader\Exception\InvalidArgumentException;
Chris@2 13
Chris@0 14 class StandaloneExtensionManager implements ExtensionManagerInterface
Chris@0 15 {
Chris@0 16 private $extensions = [
Chris@2 17 'Atom\Entry' => Extension\Atom\Entry::class,
Chris@2 18 'Atom\Feed' => Extension\Atom\Feed::class,
Chris@2 19 'Content\Entry' => Extension\Content\Entry::class,
Chris@2 20 'CreativeCommons\Entry' => Extension\CreativeCommons\Entry::class,
Chris@2 21 'CreativeCommons\Feed' => Extension\CreativeCommons\Feed::class,
Chris@2 22 'DublinCore\Entry' => Extension\DublinCore\Entry::class,
Chris@2 23 'DublinCore\Feed' => Extension\DublinCore\Feed::class,
Chris@2 24 'GooglePlayPodcast\Entry' => Extension\GooglePlayPodcast\Entry::class,
Chris@2 25 'GooglePlayPodcast\Feed' => Extension\GooglePlayPodcast\Feed::class,
Chris@2 26 'Podcast\Entry' => Extension\Podcast\Entry::class,
Chris@2 27 'Podcast\Feed' => Extension\Podcast\Feed::class,
Chris@2 28 'Slash\Entry' => Extension\Slash\Entry::class,
Chris@2 29 'Syndication\Feed' => Extension\Syndication\Feed::class,
Chris@2 30 'Thread\Entry' => Extension\Thread\Entry::class,
Chris@2 31 'WellFormedWeb\Entry' => Extension\WellFormedWeb\Entry::class,
Chris@0 32 ];
Chris@0 33
Chris@0 34 /**
Chris@0 35 * Do we have the extension?
Chris@0 36 *
Chris@0 37 * @param string $extension
Chris@0 38 * @return bool
Chris@0 39 */
Chris@0 40 public function has($extension)
Chris@0 41 {
Chris@0 42 return array_key_exists($extension, $this->extensions);
Chris@0 43 }
Chris@0 44
Chris@0 45 /**
Chris@0 46 * Retrieve the extension
Chris@0 47 *
Chris@0 48 * @param string $extension
Chris@0 49 * @return Extension\AbstractEntry|Extension\AbstractFeed
Chris@0 50 */
Chris@0 51 public function get($extension)
Chris@0 52 {
Chris@0 53 $class = $this->extensions[$extension];
Chris@0 54 return new $class();
Chris@0 55 }
Chris@2 56
Chris@2 57 /**
Chris@2 58 * Add an extension.
Chris@2 59 *
Chris@2 60 * @param string $name
Chris@2 61 * @param string $class
Chris@2 62 */
Chris@2 63 public function add($name, $class)
Chris@2 64 {
Chris@2 65 if (is_string($class)
Chris@2 66 && (
Chris@2 67 is_a($class, Extension\AbstractEntry::class, true)
Chris@2 68 || is_a($class, Extension\AbstractFeed::class, true)
Chris@2 69 )
Chris@2 70 ) {
Chris@2 71 $this->extensions[$name] = $class;
Chris@2 72 return;
Chris@2 73 }
Chris@2 74
Chris@2 75 throw new InvalidArgumentException(sprintf(
Chris@2 76 'Plugin of type %s is invalid; must implement %2$s\Extension\AbstractFeed '
Chris@2 77 . 'or %2$s\Extension\AbstractEntry',
Chris@2 78 $class,
Chris@2 79 __NAMESPACE__
Chris@2 80 ));
Chris@2 81 }
Chris@2 82
Chris@2 83 /**
Chris@2 84 * Remove an extension.
Chris@2 85 *
Chris@2 86 * @param string $name
Chris@2 87 */
Chris@2 88 public function remove($name)
Chris@2 89 {
Chris@2 90 unset($this->extensions[$name]);
Chris@2 91 }
Chris@0 92 }