Bonjour,
Au début de mon projet, j'ai mélangé les require_once avec le Zend_Loader de ZF.
Par la suite il m'a parru bien plus aisé de changer l'architecture de mes dossiers pour que l'autoload se charge de mes classes perso.
Voici ce que j'ai fait :
La strucuture de mes dossiers/application
/default
/controllers
/views
/helpers
/scripts
/library
/Zend
/web
Le code dans le bootstrap.php
1 2 3 4 5 6 7
| define('APPLICATION', '../application');
ini_set('include_path',
'../library'
.PATH_SEPARATOR.APPLICATION
.PATH_SEPARATOR.get_include_path()
); |
Quelques explications supplémentairesToutes mes classes dérivées ou non des classes Zend se trouvent dans le repertoire 'My'.
Par exemple, j'ai créé une classe facade pour appel à la base de donnée. De plus elle gère les éffacements de la cache en de création ou d'update de record.
Cette classe se trouve dans le répertoire /application/My/Db/Facade.php.
Pour que le loader puisse la retrouver et la charger je dois obligatoirement l'appeler 'My_Db_Facade'.
1 2 3
| class My_Db_Facade {
...
} |
Il faut bien comprendre comment le loader de ZF fonctionne.
A l'instanciation d'une nouvelle classe, il découpe le nom de celle-ci en fonction des '_' et les remplace pas des séparateur de dossier et ajoute l'extension '.php' à la fin.
Ce qui pour new My_Db_Facade() : My/Db/Facade.php.
Puis il parcourt les dossiers se trouvant dans l'include_path de php.ini et essait pour chacun d'eux de trouver ce chemin.
Il faut donc bien faire attention au Majuscule et au _ dans le nom de sa classe et dans les noms de dossiers et de fichiers (évitez les _ dans leurs noms).
Voilà, j'espère que ça a pu t'aider.

A+,
Olivier
0 |
0 |