← Code-Übersicht

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