Manuel PHP

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.

  1. <?php
  2. function __autoload($class_name) { 
  3.    require_once $class_name . '.php';  
  4. }  
  5.  
  6. $obj = new MaClasse1();  
  7. $obj2 = new MaClasse2();  
  8. ?> 

Exemple #2 Autre exemple d'auto-chargement

Cet exemple tente de charger l'interface ITest.

  1. <?php
  2.  
  3. function __autoload($name) { 
  4.    var_dump($name);  
  5. }  
  6.  
  7. class Foo implements ITest {  
  8. }  
  9.  
  10. /*
  11. string(5) "ITest"
  12.  
  13. Fatal error: Interface 'ITest' not found in ...
  14. */  
  15. ?> 


Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique