PHP Autoloading come parte di una soluzione quadro

Esempio

// autoload.php
spl_autoload_register(function ($class) {
    require_once "$class.php";
});

// Animal.php
class Animal {
    public function eats($food) {
         echo "Yum, $food!";
    }
}

// Ruminant.php
class Ruminant extends Animal {
    public function eats($food) {
        if ('grass' === $food) {
            parent::eats($food);
        } else {
            echo "Yuck, $food!";
        }
    }
}

// Cow.php
class Cow extends Ruminant {
}

// pasture.php
require 'autoload.php';
$animal = new Cow;
$animal->eats('grass');

Grazie al nostro caricatore automatico generico, abbiamo accesso a qualsiasi classe che segue la nostra convenzione di denominazione del caricatore automatico. In questo esempio, la nostra convenzione è semplice: la classe desiderata deve avere un file nella stessa directory chiamata per la classe e che termina con ".php". Si noti che il nome della classe corrisponde esattamente al nome del file.

Senza l'autoloading, dovremmo require manualmente le classi base. Se costruissimo un intero zoo di animali avremmo migliaia di istruzioni che potrebbero essere più facilmente sostituite con un singolo caricatore automatico.

In ultima analisi, l'autoloading di PHP è un meccanismo che ti aiuta a scrivere meno codice meccanico in modo da poterti concentrare sulla risoluzione dei problemi aziendali. Tutto quello che devi fare è definire una strategia che associ il nome della classe al nome del file . Puoi lanciare la tua strategia di autoloading, come fatto qui. Oppure, puoi usare uno qualsiasi di quelli standard che la comunità PHP ha adottato: PSR-0 o PSR-4 . Oppure, puoi usare il compositore per definire e gestire genericamente queste dipendenze.