Advertisement
ExeQue

SPL Autoload

Feb 11th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.20 KB | None | 0 0
  1. <?php
  2. function autoload($className) {
  3.     $className = ltrim($className, '\\');
  4.     $fileName = '';
  5.     $namespace = '';
  6.     if ($lastNsPos = strrpos($className, '\\')) {
  7.         $namespace = substr($className, 0, $lastNsPos);
  8.         $className = substr($className, $lastNsPos + 1);
  9.         $fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
  10.     }
  11.     $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
  12.  
  13.     $ret = strtolower($fileName);
  14.     if (file_exists($ret)) {
  15.         require $fileName;
  16.     }
  17.     else {
  18.         $db = debug_backtrace()[1];
  19.         $fn = basename($ret);
  20.         $dn = __DIR__ . DIRECTORY_SEPARATOR . dirname($ret);
  21.         $file = $db["file"];
  22.         $line = $db["line"];
  23.         ob_start();
  24.         ?>
  25.         <div>
  26.             Couln't load class <b><?php echo "$namespace\\$className" ?></b> |
  27.             "<b><?php echo $fn ?></b>" not found in
  28.         </div>
  29.         <div><b><?php echo $dn ?></b></div>
  30.         <div><b><?php echo $file ?></b> on line <b><?php echo $line ?></b></div>
  31.         <?php
  32.         die(preg_replace("/\r|\n|\\s\\s+/", "", ob_get_clean()));
  33.     }
  34. }
  35.  
  36. spl_autoload_register('autoload');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement