Auto-chargement de classes

De nombreux d�veloppeurs qui cr�ent des applications orient�es objet, cr�ent un fichier source par d�finition de classe. L'inconv�nient majeur de cette m�thode est d'avoir � �crire une longue liste d'inclusions de fichier classes au d�but de chaque script : une inclusion par classe.

En PHP 5, ce n'est plus n�cessaire. Vous pouvez d�finir la fonction __autoload() qui va automatiquement �tre appel�e si une classe n'est pas encore d�finie au moment de son utilisation. Gr�ce � elle, vous avez une derni�re chance pour inclure une d�finition de classe, avant que PHP ne d�clare une erreur.

Note: Les exceptions lanc�es depuis la fonction __autoload() ne peuvent �tre intercept�es par un bloc catch : elles provoqueront une erreur fatale.

Note: L'auto-chargement n'est pas disponible si vous utilisez PHP en mode interactif CLI.

Note: Si le nom de la classe est utilis�, .g. dans la fonction call_user_func(), alors il peut contenir des caract�res dangereux comme ../. Il est recommand� de ne pas utiliser d'entr�es utilisateur dans de telle fonction, ou, au moins, v�rifier l'entr�e dans la fonction __autoload().

Exemple #1 Exemple avec __autoload()

Cet exemple tente de charger les classes MaClasse1 et MaClasse2, dans les fichiers MaClasse1.php et MaClasse2.php respectivement.

<?php
function __autoload($class_name) {
    require_once 
$class_name '.php';
}

$obj  = new MaClasse1();
$obj2 = new MaClasse2();
?>

Exemple #2 Autre exemple d'auto-chargement

Cet exemple tente de charger l'interface ITest.

<?php

function __autoload($name) {
    
var_dump($name);
}

class 
Foo implements ITest {
}

/*
string(5) "ITest"

Fatal error: Interface 'ITest' not found in ...
*/
?>