2010-09-08 5 views
1

J'ai une application ZF en utilisant la structure standard:Y compris d'autres bibliothèques dans les applications Zend Framework

application/ 
    <etc> 
library/ 
    Zend/ 
public/ 
tests/ 

J'ai aussi une bibliothèque séparée en utilisant la structure suivante:

library/ 
    <classes> 
tests/ 
    library/ 

deux git utilisation pour la source contrôle. Je voudrais inclure la bibliothèque dans l'application, mais j'ai du mal à trouver une façon agréable et maintenable de le faire. Le contenu du dossier « bibliothèque » de la bibliothèque sont structurés de façon à convenir à autoloading, donc idéalement, je veux le contenu de la bibliothèque/d'exister dans le répertoire de la bibliothèque de l'application ZF:

library/ 
    Zend/ 
    <classes> 

Je ne peux pas utiliser git sous-modules seul, car je ne peux pas inclure un sous-dossier d'un repo comme sous-module, et les sous-modules doivent exister dans un sous-dossier eux-mêmes (donc je finirais par bibliothèque/quelque chose/<classes>).

Je jouais avec these subtree extensions pour git, ce qui est plutôt sympa, et résout le premier problème (en me permettant de découper le dossier library de mon projet de bibliothèque dans son propre repo). Mais j'ai toujours le problème de ne pas inclure directement le contenu de ce repo dans mon dossier de bibliothèque.

J'essaye d'éviter d'ajouter un nouveau dossier entier avec le chargement automatique juste pour cette lib.

Est-ce que quelqu'un connaît une bonne solution à cela, ou est-ce que quelqu'un utilise une structure de projet légèrement différente pour éviter cela?

+2

Eh bien je ne peux pas commenter les questions Git depuis que je l'utilise SVN, mais pour autant que le placement pur et simple je mettrais l'autre lib dans 'bibliothèque/PackageName' et chargez-les à partir de là. – prodigitalson

+0

Problème avec cela est que les classes dans la bibliothèque sont déjà nommées dans PackageName, donc la seule façon pour moi de faire cela serait de créer un split repo de ma bibliothèque comme library/PackageName/* et submodule include that, qui semble désordonné. –

+0

Je ne sais pas comment vous entendez par le conflit de namespaces - vous pouvez enregistrer votre propre espace de nommage de chargeur automatique et le pointer où vous voulez, alors avoir quelque chose comme "PackageName/PackageName" ne devrait pas être un problème. – prodigitalson

Répondre

0

avez-vous essayé de mettre la bibliothèque séparée à côté de Zend/bibliothèque et en ajoutant:

autoloaderNamespaces[] = "YourLibName" 

Pour application.ini? C'est ce que je ferais.

Si ce ne est pas déjà fait ajouter ce bootstrap:

protected function _initAppAutoload() 
{ 
    $moduleLoad = new Zend_Application_Module_Autoloader(array(
     'namespace' => '', 
     'basePath' => APPLICATION_PATH 
    )); 
} 
+0

Merci, mais les fichiers sont dans la bibliothèque/c'est le problème, car je veux utiliser les sous-modules git ou une autre méthode pour me permettre de le garder facilement à jour. –

Questions connexes