spl_autoload_register

funkcja

Rejestruje funkcję autoloadera wywoływaną przez PHP, gdy klasa nie jest jeszcze załadowana. Mechanizm, który Composer automatyzuje dla PSR-4.

spl_autoload_register(?callable $callback = null, bool $throw = true, bool $prepend = false): bool

spl_autoload_register dodaje callable do kolejki autoloaderów PHP. Gdy kod odwołuje się do nieznanej klasy, PHP iteruje po tej kolejce i wywołuje kolejne callbacki z nazwą klasy, aż jeden z nich załaduje plik. Parametr $prepend = true umieszcza autoloader na początku kolejki. Parametr $throw (drugi) jest ignorowany od PHP 8.0 — PHP zawsze rzuca wyjątek gdy klasy nie uda się załadować i tego zachowania nie można wyłączyć. W nowoczesnych projektach nie wywołujesz tej funkcji ręcznie — Composer generuje zoptymalizowany autoloader PSR-4 i rejestruje go automatycznie przez vendor/autoload.php. Rozumienie ręcznej rejestracji pomaga jednak zrozumieć, co Composer robi za kulisami.

<?php
declare(strict_types=1);

// Ręczny autoloader mapujący przestrzeń nazw App\ na katalog src/:
spl_autoload_register(function (string $class): void {
    $prefix    = 'App\\';
    $baseDir   = __DIR__ . '/src/';

    if (!str_starts_with($class, $prefix)) {
        return;  // nie nasza przestrzeń nazw — oddaj kontrolę następnemu autoloaderowi
    }

    $relatywna = substr($class, strlen($prefix));
    $plik      = $baseDir . str_replace('\\', '/', $relatywna) . '.php';

    if (file_exists($plik)) {
        require $plik;
    }
});

// Po rejestracji PHP automatycznie wywoła autoloader przy pierwszym użyciu klasy:
// $u = new App\Model\Uzytkownik();  // → ładuje src/Model/Uzytkownik.php

// W projekcie z Composerem zamiast powyższego wystarczy:
// require __DIR__ . '/vendor/autoload.php';
📘 Naucz się w lekcji →