diff options
Diffstat (limited to 'core/Loader.php')
-rw-r--r-- | core/Loader.php | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/core/Loader.php b/core/Loader.php deleted file mode 100644 index 6e33987f19..0000000000 --- a/core/Loader.php +++ /dev/null @@ -1,126 +0,0 @@ -<?php -/** - * Piwik - free/libre analytics platform - * - * @link http://piwik.org - * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - * - */ - -namespace Piwik; - -use Exception; - -/** - * Piwik auto loader - * - */ -class Loader -{ - // our class search path; current directory is intentionally excluded - protected static $dirs = array('/core/', '/plugins/'); - - /** - * Get class file name - * - * @param string $class Class name - * @return string Class file name - * @throws Exception if class name is invalid - */ - protected static function getClassFileName($class) - { - if (!preg_match('/^[A-Za-z0-9_\\\\]+$/D', $class)) { - throw new Exception("Invalid class name \"$class\"."); - } - - // prefixed class - $class = str_replace('_', '/', $class); - - // namespace \Piwik\Common - $class = str_replace('\\', '/', $class); - - if ($class == 'Piwik') { - return $class; - } - - $class = self::removeFirstMatchingPrefix($class, array('/Piwik/', 'Piwik/')); - $class = self::removeFirstMatchingPrefix($class, array('/Plugins/', 'Plugins/')); - - return $class; - } - - protected static function removeFirstMatchingPrefix($class, $vendorPrefixesToRemove) - { - foreach ($vendorPrefixesToRemove as $prefix) { - if (strpos($class, $prefix) === 0) { - return substr($class, strlen($prefix)); - } - } - - return $class; - } - - private static function isPluginClass($class) - { - return 0 === strpos($class, 'Piwik\Plugins') || 0 === strpos($class, '\Piwik\Plugins'); - } - - private static function usesPiwikNamespace($class) - { - return 0 === strpos($class, 'Piwik\\') || 0 === strpos($class, '\Piwik\\'); - } - - /** - * Load class by name - * - * @param string $class Class name - * @throws Exception if class not found - */ - public static function loadClass($class) - { - $classPath = self::getClassFileName($class); - - if (static::isPluginClass($class)) { - static::tryToLoadClass($class, '/plugins/', $classPath); - } elseif (static::usesPiwikNamespace($class)) { - static::tryToLoadClass($class, '/core/', $classPath); - } else { - // non-Piwik classes (e.g., Zend Framework) are in libs/ - static::tryToLoadClass($class, '/libs/', $classPath); - } - } - - private static function tryToLoadClass($class, $dir, $classPath) - { - $path = PIWIK_INCLUDE_PATH . $dir . $classPath . '.php'; - - if (file_exists($path)) { - require_once $path; // prefixed by PIWIK_INCLUDE_PATH - - return class_exists($class, false) || interface_exists($class, false); - } - - return false; - } - - /** - * Autoloader - * - * @param string $class Class name - */ - public static function autoload($class) - { - try { - self::loadClass($class); - } catch (Exception $e) { - } - } -} - -// use the SPL autoload stack -spl_autoload_register(array('Piwik\Loader', 'autoload')); - -// preserve any existing __autoload -if (function_exists('__autoload')) { - spl_autoload_register('__autoload'); -} |