telekommander
11/12/2017 - 10:58 AM

PSR-4 class autoloader #php #class #autoloader

PSR-4 class autoloader #php #class #autoloader

<?php

namespace MyProjectNamespace;

/**
 * PSR-4 class autoloader
 *
 * @param  string $class The fully-qualified class name.
 *
 * @return void
 */
spl_autoload_register(function ($class) {
  $prefix   = __NAMESPACE__ . '\\';
  $base_dir = __DIR__ . '/inc/';

  $len = strlen($prefix);
  
  if (strncmp($prefix, $class, $len) !== 0)
    return;

  $relative_class = substr($class, $len);
  $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';

  if (file_exists($file))
    require $file;
});