PHP Class Autoloader nach PSR-4 Standard

Die Implementierung ist ganz einfach: Ändere in Zeile 3 den Namespace nach deiner Wahl (am besten zu deinem Projekt-Namespace) und ggf. in Zeile 14 das Verzeichnis, in welches du deine Klassen abspeichern möchtest.

Deine Klassen müssen dann nach folgendem Schema gespeichert werden:

PROJECT_PATH\inc\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>

Das Laden der Klassen wird automatisch für alle Klassen des gleichen (Haupt-)Namespaces erledigt. Die autload.php liegt in diesem Fall in PROJECT_PATH.

Mehr Informationen zu PSR-4 gibt es unter http://www.php-fig.org/psr/psr-4/.

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