Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Si on utilise le ZF avec des modules, comment faites-vous pour gérer les includes des class ?
Au départ, quand on essaie d'apprendre à utiliser le framework, on nous dit de changer l'include path comme ceci :
set_include_path('.' . PATH_SEPARATOR . './library' . PATH_SEPARATOR . './application/models/' . PATH_SEPARATOR . get_include_path());
Sauf que quand on utilise des modules, il existe plusieurs dossiers modèle, etc.
Dans ce cas, comment faites-vous ? Vous les mettez tous dans l'include path ?
N'est-ce pas lourd en ressource de mettre plein de path ?
Merci d'avance
Hors ligne
ce n'est pas obligatoire pour avoir un dossier Models pour chaque module.
moi, j'ai tous mes Models dans un dossier. comme ça l'include path reste comme il est.
sinon, le plus pratique c'est de faire comme vous avez dit...mettre tous dans l'include path.
Hors ligne
Bonjour,
J'ai le même problème que Akis dans le cadre du développement d'une application semblable à un CMS.
Pour ma part, je n'aimerais pas devoir mettre tous mes modèles dans une seule classe car chaque module correspond à un type de fonctions pour mon site (donc possibilité de ne pas inclure certains modules : par exemple forum).
Comme les dernier message de ce sujet date du 2.4.2008, je me permet de reposer la question :
Est-ce possible d'accéder aux modèles de chaque module sans devoir mettre des "include path" pour chaque modules dans le bootstrap ?
set_include_path('.' ... . PATH_SEPARATOR . './application/module1/models/' . PATH_SEPARATOR . './application/module2/models/' ...
Merci d'avance
Hors ligne
Quelques petites remarques sur le sujet...
1) il est préférable d'utiliser un dossier "models" par module, du moins lorsque ce module a été designé pour être réutilisable (ex. un forum, un système d'identification, etc...)
2) un petit truc, pour plus de lisibilité si l'on affecte de nombreux chemins à l'include_path :
$includePath = array( '/path/to/zf/library', '../library', '../application/default/models/', get_include_path() ); set_include_path(implode(PATH_SEPARATOR, $includePath));
ça évite les concaténations interminables et les redondances de PATH_SEPARATOR
3) notez que pour gagner quelques millisecondes (il y en a que ça fait triper, et d'autres qui en ont besoin ), il est préférable de placer en premier le chemin du ZF, car PHP teste la présence du fichier à inclure dans l'ordre, et qu'il s'arrêtera dès qu'il trouve une correspondance. Comme ce sont les fichiers sources du ZF qui sont les plus abondamment inclus...
4) autre option pour l'inclusion des modèles, vous pouvez aussi enregistrer un autoloader personnalisé avec Zend_Loader::registerAutoload()
Hors ligne
Pour ma part j'utilise le système de nomenclature de zend, c-a-d, j'ajoute dans l'include path la racine de mes modules et de mes plugins, donc si je veux, par exemple, retrouver le model permettant de gérer les tickets d'un blog, je n'ai qu'à l'instancier la classe:
new Blog_Model_Ticket_Component
elle est alors automatiquement chargé via le Zend_Loader.
Hors ligne