<?php
>
/**
> declare(strict_types=1);
* SimplePie
*
* A PHP-Based RSS and Atom Feed Framework.
* Takes the hard work out of managing a complete RSS/Atom solution.
*
< * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
> * Copyright (c) 2004-2022, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* * Neither the name of the SimplePie Team nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
* AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* @package SimplePie
* @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
* @author Ryan Parman
* @author Sam Sneddon
* @author Ryan McCue
* @link http://simplepie.org/ SimplePie
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
*/
< /**
< * Handles creating objects and calling methods
< *
< * Access this via {@see SimplePie::get_registry()}
< *
< * @package SimplePie
< */
< class SimplePie_Registry
< {
< /**
< * Default class mapping
< *
< * Overriding classes *must* subclass these.
< *
< * @var array
< */
< protected $default = array(
< 'Cache' => 'SimplePie_Cache',
< 'Locator' => 'SimplePie_Locator',
< 'Parser' => 'SimplePie_Parser',
< 'File' => 'SimplePie_File',
< 'Sanitize' => 'SimplePie_Sanitize',
< 'Item' => 'SimplePie_Item',
< 'Author' => 'SimplePie_Author',
< 'Category' => 'SimplePie_Category',
< 'Enclosure' => 'SimplePie_Enclosure',
< 'Caption' => 'SimplePie_Caption',
< 'Copyright' => 'SimplePie_Copyright',
< 'Credit' => 'SimplePie_Credit',
< 'Rating' => 'SimplePie_Rating',
< 'Restriction' => 'SimplePie_Restriction',
< 'Content_Type_Sniffer' => 'SimplePie_Content_Type_Sniffer',
< 'Source' => 'SimplePie_Source',
< 'Misc' => 'SimplePie_Misc',
< 'XML_Declaration_Parser' => 'SimplePie_XML_Declaration_Parser',
< 'Parse_Date' => 'SimplePie_Parse_Date',
< );
> use SimplePie\Registry;
< /**
< * Class mapping
< *
< * @see register()
< * @var array
< */
< protected $classes = array();
> class_exists('SimplePie\Registry');
< /**
< * Legacy classes
< *
< * @see register()
< * @var array
< */
< protected $legacy = array();
> // @trigger_error(sprintf('Using the "SimplePie_Registry" class is deprecated since SimplePie 1.7.0, use "SimplePie\Registry" instead.'), \E_USER_DEPRECATED);
< /**
< * Constructor
< *
< * No-op
< */
< public function __construct() { }
<
< /**
< * Register a class
< *
< * @param string $type See {@see $default} for names
< * @param string $class Class name, must subclass the corresponding default
< * @param bool $legacy Whether to enable legacy support for this class
< * @return bool Successfulness
< */
< public function register($type, $class, $legacy = false)
< {
< if (!@is_subclass_of($class, $this->default[$type]))
> if (\false) {
> /** @deprecated since SimplePie 1.7.0, use "SimplePie\Registry" instead */
> class SimplePie_Registry extends Registry
{
< return false;
}
<
< $this->classes[$type] = $class;
<
< if ($legacy)
< {
< $this->legacy[] = $class;
< }
<
< return true;
}
<
< /**
< * Get the class registered for a type
< *
< * Where possible, use {@see create()} or {@see call()} instead
< *
< * @param string $type
< * @return string|null
< */
< public function get_class($type)
< {
< if (!empty($this->classes[$type]))
< {
< return $this->classes[$type];
< }
< if (!empty($this->default[$type]))
< {
< return $this->default[$type];
< }
<
< return null;
< }
<
< /**
< * Create a new instance of a given type
< *
< * @param string $type
< * @param array $parameters Parameters to pass to the constructor
< * @return object Instance of class
< */
< public function &create($type, $parameters = array())
< {
< $class = $this->get_class($type);
<
< if (in_array($class, $this->legacy))
< {
< switch ($type)
< {
< case 'locator':
< // Legacy: file, timeout, useragent, file_class, max_checked_feeds, content_type_sniffer_class
< // Specified: file, timeout, useragent, max_checked_feeds
< $replacement = array($this->get_class('file'), $parameters[3], $this->get_class('content_type_sniffer'));
< array_splice($parameters, 3, 1, $replacement);
< break;
< }
< }
<
< if (!method_exists($class, '__construct'))
< {
< $instance = new $class;
< }
< else
< {
< $reflector = new ReflectionClass($class);
< $instance = $reflector->newInstanceArgs($parameters);
< }
<
< if (method_exists($instance, 'set_registry'))
< {
< $instance->set_registry($this);
< }
< return $instance;
< }
<
< /**
< * Call a static method for a type
< *
< * @param string $type
< * @param string $method
< * @param array $parameters
< * @return mixed
< */
< public function &call($type, $method, $parameters = array())
< {
< $class = $this->get_class($type);
<
< if (in_array($class, $this->legacy))
< {
< switch ($type)
< {
< case 'Cache':
< // For backwards compatibility with old non-static
< // Cache::create() methods in PHP < 8.0.
< // No longer supported as of PHP 8.0.
< if ($method === 'get_handler')
< {
< $result = @call_user_func_array(array($class, 'create'), $parameters);
< return $result;
< }
< break;
< }
< }
<
< $result = call_user_func_array(array($class, $method), $parameters);
< return $result;
< }
< }
<
< class_alias('SimplePie_Registry', 'SimplePie\Registry', false);