Buona sera ragazzi,
piccolo regalino di pasqua 
In questo topic vi parlo di autoloading.
L'autoloading è quel processo che ci permette di caricare una classe ed il relativo file senza bisogno di usare funzioni di include o require
Partiamo dalla base, supponiamo di avere una classe user che dobbiamo istanziare e utilizzare
Generalmente:
Codice PHP:
require_once( 'user.php' );
$user = new user();
E' buona norma scrivere la definizione della classe su file singolo per una migliore organizzazione del lavoro. Questo ci forzava a dover includere ogni file per ogni classe che dovevamo usare.
La prima funzione che ci è venuta in aiuto dall'avvento di PHP 5 fu la magic function chiamata __autoload() . Questa funzione forniva un'ultima possibilità di caricare la definizione della classe in runtime prima di generare un errore.
una semplicissima implementazione di questo metodo:
Codice PHP:
function __autoload( $className ) {
$filename = $className . ".php";
if ( is_readable( $filename ) ) {
require $filename;
}
}
l'unica considerazione da fare qui è che è molto meglio usare la funzione is_readable() piuttosto che file_exists(). Un file potrebbe esistere ma non avere i permessi per essere letto, is_readable() effettua tutti e due i controlli.
Questa soluzione però era limitativa in quanto si poteva definire una sola funzione di autoload.
Fu cosi che da PHP 5.1.2 è stato introdotto spl_autoload() e le relative funzioni.
spl_autoload() permette di registrare N funzioni di autoload tramite la funzione spl_autoload_register()
Esempio:
Codice PHP:
function autoloadModels( $className ) {
$filename = "models/" . $className . ".php";
if ( is_readable( $filename ) ) {
require $filename;
}
}
function autoloadControllers( $className ) {
$filename = "controllers/" . $className . ".php";
if ( is_readable( $filename ) ) {
require $filename;
}
}
spl_autoload_register( 'autoloadModels' );
spl_autoload_register( 'autoloadControllers' );
Ovviamente questi semplici esempi sono solamente una dimostrazione di come l'autoloading funzionava nelle versioni precedenti di PHP.
Attualmente con l'avvento dei NAMESPACE le cose sono leggermente cambiate e ci sono degli standard che hanno preso piede.
Il primo e l'oggetto del topic è lo standard PSR-0.
Nel prossimo post vediamo cos'è e come si usa.
Intanto buona lettura.