Sobes.tech
Junior

Ce este încărcarea automată a claselor în PHP?

sobes.tech AI

Răspuns de la AI

Mecanismul care permite încărcarea dinamică a fișierelor de clase (interfețe, traits), atunci când acestea sunt utilizate pentru prima dată într-un script, în loc să fie incluse explicit cu require sau include.

Avantaje:

  • Simplifică structura codului.
  • Accelerează execuția aplicației (clasele inutile nu sunt încărcate).
  • Facilitează gestionarea dependențelor.

Este implementat cu ajutorul funcției spl_autoload_register(), care înregistrează funcții de autoload în stivă. Când se încearcă crearea unei instanțe a unei clase nedefinite, PHP apelează funcțiile înregistrate în ordine, transmitând numele clasei ca argument.

Exemplu de funcție de autoload simplă:

<?php
// Această funcție va fi apelată atunci când se încearcă utilizarea unei clase nedefinite
spl_autoload_register(function (string $className) {
    // Presupunem că clasele sunt stocate în fișiere cu extensia .php
    // și numele fișierului corespunde cu numele clasei (sensibil la majuscule/minuscule!)
    $filePath = $className . '.php';

    // Verificăm dacă fișierul există și îl includem
    if (file_exists($filePath)) {
        require_once $filePath;
    }
});

// Exemplu de utilizare a unei clase care va fi încărcată automat
$myObject = new MyClass();

Standardul cel mai comun pentru autoloading este PSR-4. Acesta definește modul în care spațiile de nume ale claselor sunt mapate la căi către fișiere în sistemul de fișiere.