PHP: autoload delle classi nel pattern MVC
L'autoload delle classi nell'implementazione del pattern MVC in PHP.
Nell'implementazione PHP del pattern MVC le classi usate devono essere caricate automaticamente. Tradizionalmente questo compito veniva svolto dalla funzione __autoload(), ma da PHP 5.3 in poi si possono utilizzare le analoghe funzioni del modulo SPL. In questo articolo vedremo come effettuare tale caricamento automatico utilizzando la funzione spl_autoload_register.
Se abbiamo una struttura delle directory di questo tipo:
- assets - dataobjects - includes - index.php - modules - views
Creiamo una classe Autoloader con tre metodi statici e salviamo il file nella directory /includes. La struttura della classe รจ la seguente:
class Autoloader
{
public static function moduleAutoloader($class)
{
$path = $_SERVER['DOCUMENT_ROOT'] . "/modules/{$class}.php";
if (is_readable($path)) {
require $path;
}
}
public static function daoAutoloader($class)
{
$path = $_SERVER['DOCUMENT_ROOT'] . "/dataobjects/{$class}.php";
if (is_readable($path)) {
require $path;
}
}
public static function includesAutoloader($class)
{
$path = $_SERVER['DOCUMENT_ROOT'] . "/includes/{$class}.php";
if (is_readable($path)) {
require $path;
}
}
}
spl_autoload_register('Autoloader::includesAutoloader');
spl_autoload_register('Autoloader::daoAutoloader');
spl_autoload_register('Autoloader::moduleAutoloader');
Ovviamente i primi moduli ad essere caricati saranno quelli presenti nella directory /includes. Quindi nel file index.php richiamiamo la nostra classe in questo modo all'inizio del file:
<?php
require 'includes/autoloader.php';
session_start();
//... continua
?>
Ora tutte le classi verranno caricate automaticamente.