spl_autoload în PHP

Implementarea implicită de autoload: caută în include_path un fișier cu numele clasei scris cu litere mici.

Sintaxă
spl_autoload(string $class, ?string $file_extensions = null): void

Ce face spl_autoload

Dacă apelezi spl_autoload_register() fără parametri, PHP folosește spl_autoload ca autoloader. Pentru clasa App\Produs, caută fișierul app/produs.inc sau app/produs.php în directoarele din include_path (care conține de obicei și directorul curent).

Extensiile căutate se schimbă cu spl_autoload_extensions. În practică, pentru că numele fișierelor trebuie să fie cu litere mici, majoritatea proiectelor folosesc propriul autoloader sau Composer.

Parametri

Parametru Descriere
$class Numele clasei de încărcat.
$file_extensions Opțional. Extensiile încercate, separate prin virgulă, de exemplu ".php".

Ce returnează

Nimic.

Exemple

Exemplul 1: Autoloader-ul implicit

<?php
file_put_contents("produs.php", '<?php class Produs { public string $nume = "Laptop"; }');

spl_autoload_register();
print_r(spl_autoload_functions());

$p = new Produs();
echo $p->nume;

Rezultat

Array
(
    [0] => spl_autoload
)
Laptop

Greșeli frecvente

  • Numești fișierul Produs.php pe un server Linux. spl_autoload caută produs.php, cu litere mici, iar pe Linux numele de fișiere țin cont de majuscule.

Comenzi înrudite

  • spl_autoload_register: Înregistrează o funcție care încarcă automat fișierul unei clase prima dată când clasa este folosită.
  • spl_autoload_extensions: Setează sau citește extensiile de fișier încercate de autoloader-ul implicit spl_autoload.
  • spl_autoload_call: Încearcă pe rând toate autoloader-ele înregistrate pentru a încărca o clasă.