ZF : module et autoloader

Avec Zend Framework, lorsque l’on travail un projet conséquent il devient vite utile de travailler avec le mécanisme des modules. Celui-ci permet d’étendre pas mal de chose et surtout une séparation poussée en … module.

Le problème de ce mécanisme1 est qu’il faut définir le chemin pour le chargement automatique à l’aide de ceci :

$autoloader = new Zend_Application_Module_Autoloader(array(
	'namespace' => 'SuperModule',
	'basePath'  => 'path to super module',
));

Je vous propose donc de faire une petite amélioration afin que ce chargement soit fait automatiquement.

Avant tout, dans votre configuration (ici en .ini) vous devez au moins avoir ceci de présent :

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules =

Ensuite, à la base de chaque dossier module créer un fichier Bootstrap.php2 :

<?php
class SuperModule_Bootstrap extends Grummfy_Bootstrap{}
# EOF

Et pour finir créer le fichier3 library/Grummfy/Bootstrap.php

<?php
 
abstract class Grummfy_Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
	protected function _initAutoload()
	{
		$className = get_class($this);
		$zf_namespace = explode('_', $className);
		$reflector = new ReflectionClass($className);
		$autoloader = new Zend_Application_Module_Autoloader(array(
			'namespace' => $zf_namespace[0],
			'basePath'  => dirname($reflector->getFileName()),
		));
		return $autoloader;
	}
}
 
# EOF
  1. sauf si j’ai loupé un truc…
  2. ne pas oublier de changer le nom du module …
  3. n’oubliez pas de déclarer le « namespace » Grummfy ou bien d’inclure le fichier

Similar Posts:

    None Found