<?php error_reporting(-1); /** * Sample PSR-0 autoloader. * * Do not use as such: it is only present to demo classes in a PSR-0 context. * * Straight from the PSR-0 standard. * * @link https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md * * @param string $className */ function psr0_autoload($className) { $className = ltrim($className, '\\'); $fileName = ''; $namespace = ''; if ($lastNsPos = strripos($className, '\\')) { $namespace = substr($className, 0, $lastNsPos); $className = substr($className, $lastNsPos + 1); $fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR; } $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; /* $stack = array_slice(debug_backtrace(), 2, 1); $stack = reset($stack); unset($stack['args']); print_r($stack); */ $sts = @include $fileName; return $sts; } /** * An SPL autoloader function designed to avoid fatals on unfound classes. * * Add at the end of the autoloader chain and it will implement a stub class * which will throw an exception, hence be catchable, when instantiated or used * in a static call, instead of causing a PHP fatal error. * * Note that this has nothing to do with PSR0/PSR4, and PSR4 actually forbids * compliant autoloated from throwing exceptions, so a function like this is * actually needed when using a PSR4 autoloader, since the autoloated itself * will not be allowed to catch the missing class. * * @param $name * The name of a class to be loaded. */ function autoload_except($name) { $src = <<<EOT class $name { public function __construct() { throw new InvalidArgumentException("$name could not be found."); } public static function __callStatic(\$method_name, \$arguments) { throw new InvalidArgumentException("$name could not be found."); } } EOT; eval($src); }