<?php
/**
* 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, Geoffrey 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, Geoffrey Sneddon, Ryan McCue
> * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
* @author Ryan Parman
< * @author Geoffrey Sneddon
> * @author Sam Sneddon
* @author Ryan McCue
* @link http://simplepie.org/ SimplePie
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
*/
> /**
// autoloader
> * PSR-4 implementation for SimplePie.
spl_autoload_register(array(new SimplePie_Autoloader(), 'autoload'));
> *
> * After registering this autoload function with SPL, the following line
if (!class_exists('SimplePie'))
> * would cause the function to attempt to load the \SimplePie\SimplePie class
{
> * from /src/SimplePie.php:
trigger_error('Autoloader not registered properly', E_USER_ERROR);
> *
}
> * new \SimplePie\SimplePie();
> *
/**
> * @param string $class The fully-qualified class name.
* Autoloader class
> * @return void
*
> */
* @package SimplePie
> spl_autoload_register(function ($class) {
* @subpackage API
>
*/
> // project-specific namespace prefix
class SimplePie_Autoloader
> $prefix = 'SimplePie\\';
{
>
/**
> // base directory for the namespace prefix
* Constructor
> $base_dir = __DIR__ . '/src/';
*/
>
public function __construct()
> // does the class use the namespace prefix?
{
> $len = strlen($prefix);
$this->path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'library';
> if (strncmp($prefix, $class, $len) !== 0) {
}
> // no, move to the next registered autoloader
> return;
/**
> }
* Autoloader
>
*
> // get the relative class name
* @param string $class The name of the class to attempt to load.
> $relative_class = substr($class, $len);
*/
>
public function autoload($class)
> // replace the namespace prefix with the base directory, replace namespace
{
> // separators with directory separators in the relative class name, append
// Only load the class if it starts with "SimplePie"
> // with .php
if (strpos($class, 'SimplePie') !== 0)
> $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
{
>
return;
> // if the file exists, require it
}
> if (file_exists($file)) {
> require $file;
$filename = $this->path . DIRECTORY_SEPARATOR . str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';
> }
include $filename;
> });
}
>
}
> protected $path;
>