Autoloader.php
Pfad: src/Autoloader.php
Ext: php
Größe: 1285 Bytes
Geändert: 2026-07-15 16:12:01+02
<?php
declare(strict_types=1);
namespace Demo;
/**
* Minimaler PSR-4-Autoloader fuer den Namespace-Praefix "Demo\".
* Kein Framework, keine externe Abhaengigkeit.
*/
final class Autoloader
{
/** @var string Wurzelverzeichnis der Klassendateien. */
private string $baseDir;
/**
* Bindet den Autoloader an sein Wurzelverzeichnis.
*
* @param string $baseDir Absolutes Verzeichnis, das den "Demo"-Namespace beherbergt.
*/
public function __construct(string $baseDir)
{
$this->baseDir = rtrim($baseDir, '/');
}
/**
* Haengt diesen Autoloader in die SPL-Autoload-Kette ein.
*/
public function register(): void
{
spl_autoload_register([$this, 'load']);
}
/**
* Laedt die zu einer Klasse gehoerende Datei, sofern sie im "Demo"-Namespace liegt.
*
* @param string $class Voll qualifizierter Klassenname.
*/
public function load(string $class): void
{
$prefix = 'Demo\\';
if (!str_starts_with($class, $prefix)) {
return;
}
$relative = substr($class, strlen($prefix));
$file = $this->baseDir . '/' . str_replace('\\', '/', $relative) . '.php';
if (is_file($file)) {
require $file;
}
}
}