8
votes

Intégration de zf / doctrine2: Où met-je mes modèles / entités et cours de proxy

Si je tiens à l'intégration de Zend Framework 1.10 avec la doctrine 2 Où puis-je mettre mes modèles / entités et mandataires de doctrine? Je pensais que le / application ou les répertoires / bibliothèque . Si je fais dans le répertoire / bibliothèque , permettra-t-il d'interférer avec des classes d'autochargeage ZF à partir de là depuis que les classes sont utilisées des espaces de noms PHP 5.3 VS ESPACES DE STYLE DE PEAR.


0 commentaires

3 Réponses :


0
votes

Je mettrais les modèles dans le même répertoire où la vie "normale" modélise la vie. / modèles

Vous pouvez dire à DOCTRINE de générer les modèles de cet endroit et préfixez-les avec "par défaut_model" ou autre.

Consultez l'une des screencasts John Lebenshold sur Zend Framework et Doctrine

Zend Screencaststs


1 commentaires

J'utilise la doctrine 2 qui utilise des espaces de noms PHP 5.3 "True", je ne pense pas pouvoir faire ça? Comment puis-je dire à l'autochargeur de Zend à charger mes « entités '&' proxies 'à partir du Application_Path ? J'ai réussi à le faire fonctionner en mettant mes entités et proxies dans Bibliothèque / application où ils sont dans le chemin Inclure afin qu'il fonctionne afin qu'il fonctionne



1
votes

En théorie, vous pouvez mettre ensuite n'importe où, tant que les espaces de noms résolvent corrects.

Je suggérerais cette structure: xxx

chargez le "myApp" en utilisant Le chargeur de classe de la doctrine. Je n'ai eu aucun conflit à utiliser le chargeur de doctrine avec le chargeur Zend (si vous avez des cours qui utilisent la convention de poire dans votre dossier d'espace de noms, vous devrez toujours utiliser le chargeur Zend).

N'oubliez pas que " Les modèles 'peuvent être plus que de simplement vos classes d'entité. Ma couche modèle consiste en des interfaces, des usines, des validateurs et des objets de service. À cette fin, tout ce qui est la logique d'entreprise spécifique à l'application devrait probablement aller dans le dossier modèle.


4 commentaires

Comment configurez-vous le chargeur de classe de doctrine pour fonctionner avec Zend AutoLoader? Je place actuellement mes entités dans le dossier / bibliothèque / application . Ensuite, dans application.ini a ajouté autoloadernamespaces [] = application . Cela fonctionne bien, car Zend Charger semble être capable de fonctionner avec des espaces de noms PHP 5.3, mais je ne peux pas l'obtenir pour charger des classes de quelque part en dehors du include_path s. Il sera bon de savoir comment je peux le faire avec la doctrine Classe Charger et Zend (en spécifiant un emplacement personnalisé pour trouver des fichiers)


Voir cette section du manuel: doctrine-project.org/projects/orm/22.0/docs/reference/... Fondamentalement, vous pouvez utiliser le chargeur de classe de doctrine pour charger n'importe quel espace de noms PHP 5.3. Il suffit de fournir le nom de l'espace de noms de base (comme «doctrine» ou «myApp», et un chemin vers le dossier. Vous pouvez alors importer des classes d'espace de noms avec le mot-clé «Utiliser».


Je sais que ma question est maintenant comment puis-je ajouter le chargeur de classe de doctrine en tant que chargeur de classe à mon application Zend?


J'exécute la doctrine classe chargeuse dans l'index.php de mon application



8
votes

Je travaille sur une application qui intègre la doctrine 2 avec ZF1.10 Aussi. Vous n'avez pas besoin d'utiliser le chargeur automatique de la doctrine.

1) dans votre application.ini Ajoutez la ligne suivante ( En supposant que vous ayez une doctrine installée dans votre dossier de bibliothèque (identique au dossier Zend): p> xxx pré>

2) Créez une ressource de doctrine ou d'entitémanager. Dans votre fichier INI: p>

$bootstrap = $this->getInvokeArg('bootstrap');
$em = $bootstrap->getResource('entitymanager');


3 commentaires

Et qu'en est-il des référentiels? @EntTity (RepositoryClass = "entités \ ArticlesRepository") Je ne peux pas les charger. :(


En tant que FYI, je n'ai pas encore eu la chance d'utiliser cette fonctionnalité (été trop occupé avec Magento). Selon les documents, la valeur de dépôtclass doit être un nom de classe entièrement qualifié qui étend la doctrine \ orm \ entityrepositoryreposity.


En outre, vous devez être conscient que l'exemple que vous avez est une classe de pépins de noms. Si vous n'utilisez pas d'espaces de noms, essayez de mettre le nom de la classe complète dans votre présence (exemple: module_model_entities_articlestrepository).