Utilisation de base de l'autoloaderMaintenant que vous savez les buts et le fonctionnement des autoloaders de Zend Framework, voyons comment utiliser Zend_Loader_Autoloader. Dans le cas le plus simple, vous incluez cette classe et l'instanciez. Comme Zend_Loader_Autoloader est un singleton (car l'autoloader de la SPL est unique), nous utilisons getInstance() pour en récupérer l'instance.
Par défaut, ceci va permettre de charger des classes dont le préfixe est "Zend_" ou "ZendX_", si leurs fichiers sont dans votre include_path. Que se passe-t-il si vous avez d'autres espaces de noms à charger? Le mieux et le plus simple est alors d'utiliser la méthode registerNamespace() de l'instance. Vous pouvez lui passer un préfixe simple, ou un tableau de préfixes:
Aussi, vous pouvez indiquer à Zend_Loader_Autoloader d'agire comme autoloader par défaut ("de secours"). Ceci signifie qu'il essayera de charger toute classe peu importe son préfixe.
Warning
N'utilisez pas l'autoloader de secoursCe peut être tentant de se reposer abondamment sur Zend_Loader_Autoloader comme chargeur de secours, nous ne recommandons pas une telle pratique. En interne, Zend_Loader_Autoloader utilise Zend_Loader::loadClass() pour charger les classes. Cette méthode utilise include() pour tenter de charger le fichier de la classe. include() retourne FALSE s'il ne réussi pas -- mais renvoie aussi un warning PHP. Ce dernier point peut mener à des problèmes:
Vous pouvez supprimer les messages d'erreur (la documentation de Zend_Loader_Autoloader détaille cela), mais notez bien que la suppression n'est utilisée que lorsque display_errors est activé; le journal des évènements enregistrera toujours l'erreur. Pour ces raisons, nous vous recommandons de bien configurer vos espaces de noms avec l'autoloader.
Si vous possédez votre propre autoloader et que vous voulez l'utiliser avec Zend Framework -- peut être un autoloader provenant d'une autre librairie que vous utilisez -- vous pouvez l'enregistrer grâce aux méthodes de Zend_Loader_Autoloader pushAutoloader() et unshiftAutoloader(). Ces méthodes ajoutent des autoloaders à la fin ou au début de la chaine utilisée avant l'exécution des mecanismes internes d'auto-chargement de Zend Framewor. Cette approche a les avantages suivants:
Voici une liste de définitions de fonctions de rappel pour auto-chargement valides en PHP.
|