Ich bin auf zwei Methoden gestoßen, um Abhängigkeiten in benutzerdefinierte Doctrine-Repositories zu injizieren.Abhängigkeitsinjektion im benutzerdefinierten Doktrinen-Repository
- https://juriansluiman.nl/article/142/dependency-injection-in-a-doctrine-repository
- http://blog.tomhanderson.com/2016/01/dependency-injection-in-doctrine.html
Ich verstehe Methode ein, dass sie nicht mehr verwendet die Entity-Manager das Repository abgerufen und verwendet stattdessen den Service-Manager.
Allerdings verstehe ich Methode zwei nicht. Es gibt zwei Teile, die ich nicht verstehe. Der erste ist der Abschnitt "Konfiguration". Was macht der Doctrine-Konfigurationsschlüssel "repository_factory"?
return array(
'doctrine' => array(
'configuration' => array(
'orm_default' => array(
'repository_factory' => 'Db\Repository\RepositoryFactory',
),
),
),
'service_manager' => array(
'invokables' => array(
'Db\Repository\RepositoryFactory' => 'Db\Repository\RepositoryFactory',
),
),
);
Dann zweitens bin ich mir nicht sicher, wie Sie das Repository abrufen. Soll ich den Entity Manager noch verwenden? Oder sollte ich den Service Manager wie in Methode eins verwenden?
Also nehme ich an, dass Mittel für jedes mögliche Repository, in das ich Abhängigkeiten injizieren möchte, eine ähnliche Klausel benötigen würde: if (is_subclass_of ($ entityNamespace, '\ App \ Util \ Doctrine \ Entity \ EntityInterface', true)) {'in dieser einzigen Datei. Ich würde auch alle meine 'use'-Anweisungen in einer einzigen Datei für jedes Repository haben müssen, in das ich Abhängigkeiten einfügen möchte. Ich denke, dass es modularer wäre, die erste Methode zu verwenden. Gibt es jemals einen Grund, eine Methode gegenüber der anderen zu verwenden? Oder ist es einfach Präferenz? –