Doctrine2 Entitäten in mehreren namespaces
Ich bin der Entwicklung einer web-Anwendung mit dem Zend Framework 2 was wird aus mehreren Modulen, und das möchte ich den entity-Klassen in das Modul, zu dem Sie gehören.
Ist es möglich, dies zu tun mit Doctrine2 ORM? Durch das Lesen der Dokumentation, es scheint immer zu erwarten, dass alle Personen, die unter am meisten ein namespace, während ich möchte,
- Module1\Entity
- "Modul2" \Entity
- und so weiter...
Wie konnte dies möglich gemacht werden?
Danke an alle!
- Es sollte kein problem sein. Der entity-manager lädt mehrere Fahrer, die aus jeder
module.config.php
. Jedes Modul hat seine eigenen Treiber und Organisationen. Der manager ist der host, um alle Menschen, so gibt es keine Probleme. Oder was ist es genau, Sie haben Schwierigkeiten mit dem Verständnis? - Naja, ich habe gelesen, die docs, aber ich bin sehr neu in dieser Art von Programmierung, ich habe immer einfachen prozeduralen Stil vor. Könnten Sie mir ein Beispiel, wie man die richtige config? Ich habe nicht versucht, alles jetzt, weil ich bin noch auf der Suche, um zu finden, die besten Werkzeuge für den job.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der erste Schritt, um Lehre Konfiguration ist in Ihrer globalen Konfigurations-Datei, um die Verbindung aufzubauen. Ich persönlich Tue dies auf zwei Dateien, die erste ist
./config/autoload/global.php
und dem zweiten./config/autoload/local.php
Dies ist für einen Grund, und dieser ist, dass Sie nichts mit
local
nicht gepostet bekommen in meine git-repositories. Also meine Anmeldeinformationen sind sicher../config/autoload/global.php
./config/autoload/local.php
Der zweite Schritt wäre, einen Treiber für Ihre Entitäten. Dies erfolgt auf der Modul-Namespace base.
./modules/ModuleNamespace/config/module.config.php
Was dort geschieht? Gut, wir verlängern die Lehre['Fahrer'] - array durch das hinzufügen neuer Treiber. Der Fahrer hat den namespace von unserem Modul. Für diese müssen wir auch definieren Sie den namespace in unserer Konfigurationsdatei. Der Treiber definiert, dass alle Personen für diese Fahrer sind innerhalb einer bestimmten Pfad.
Den nächsten Schritt zu tun ist, dass die
orm_defaults
- Treiber wird erweitert durch eine Abtretung definieren, dass alleModuleNamespace\Entity
Klassen geladen werden von unsererModuleNamespace_driver
Konfiguration.Und letztlich ist dies erfolgt für jedes einzelne Modul. Also egal, wenn du einen
Filemanager\Entity\File
oderPictureDb\Entity\File
Klassen, beide funktionieren und beide werden geladen. Module sind - von Natur aus - unabhängig von einander. Wenn Sie Abhängigkeiten haben, oder lieber arbeiten gut zusammen, die Sie auf Ihre eigene Funktion. So dass mehrere Module mit mehreren Personen sind gar kein problem 😉Ich hoffe, das Sie verstehen, das Thema ein wenig. Für arbeiten unter Spannung Beispielen, die ich schrieb zwei blog Beiträge über das Thema.
Diese können Ihnen auch helfen, ein wenig.
proxies folders
:SWenn Sie die DoctrineORMModule Proxies geschrieben werden /data/DoctrineORMModule/Proxy. Ich bin mir nicht sicher, ob müssen Sie erstellen die Ordner manuell anzupassen und Privilegien.
Achtung:
Für einige Grund, die ZendSkeletonApplication Schiffe ohne namespaces gesetzt!
ZendSkeletonApplication /module /Application /config /module.config.php
Erhalten Sie möglicherweise diese Fehlermeldung, wenn Sie vergessen, die namespace in jedem module.config.php!
Der Klasse ... wurde nicht gefunden in der Kette konfigurierten namespaces ZfcUser\Entity, \Entity, ZfcUserDoctrineORM\Entity