Der kleinste PHP-Autoloader der Welt

Autoloading ist in PHP eine feine Sache. Statt jede einzelne Klasse mittels eigenem require einzubinden, kann man bei existierendem Autoloader einfach durch Aufruf der Klasse diese laden.

Eine Klasse legt man dabei einfach in einer Verzeichnisstruktur ab, z.B. unter Example/Foo/Bar.php:

// Example/Foo/Bar.php

namespace Example\Foo;

class Bar {
    // Stuff here
}

Der kleinste Autoloader der Welt mit autoload_register verarbeitet dann alle in PHP ansonsten unbekannten Klassen:

spl_autoload_register(function(string $classname) {
    require(__DIR__ . '/' . str_replace('\\', '/', $classname) . '.php');
});

Dabei muss der vordere Part mit __DIR__ . ‚/‘ natürlich auf den richtigen Basispfad gesetzt werden, in dem dann die Klassen liegen.

Und die Klasse setzt man dann nach eingeschalteten Autoloader wie folgt ein:

// See, no require here

$bar = new \Example\Foo\Bar();

Den kleinsten PHP-Autoloader der Welt kann man auch gut mit anderen Autoloadern zusammen verwenden, wie z.B. dem Composer-Autoloader.

Update 2022–10: Seit PHP8 spätestens ist die Verwendung von __autload nicht mehr möglich, daher benutzt das Beispiel nur noch autoload_register.