123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?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);
- }
|