Was ist DI
für und was ist ihr Anwendungsfall, wenn wir ServiceManager
haben?Zend Di vs ServiceManager Dependency-Injektion Container
Sie erscheinen da in Konfigurationsdateien ähnlich zu sein, sowohl für zend-di
und zend-servicemanager
wir einige Optionen wie aliases
und invokables
einrichten.
Ich versuche zu verstehen, was hinter den Kulissen mit diesen Komponenten passiert, und die Dokumentation gab mir nicht genug Informationen.
Können Sie mir bitte sagen, was der Unterschied ist und wann ich Di
anstelle von ServiceManager
verwenden sollte?
Es gibt eine gute Diskussion über Behälter im Allgemeinen auf http://www.php-fig.org/psr/psr-11/meta/ – Dennis
moderner Ratschlag scheint zu sein, "benutze DI oder SM nicht" selbst, es sei denn, sie sind bereits Teil deines Rahmens. Zend verwendet den Factory-basierten Service Manager (der im Wesentlichen ein eingeschränkter DI-Container ist), in dem Sie darauf achten müssen, dass kein Container in eine Ihrer eigenen Klassen injiziert wird. Sie können den Container jedoch als Teil Ihrer Einrichtung verwenden Anwendung. in Zend können Sie Einrichtungen des Frameworks selbst verwenden, um anzupassen, wie Ihre Abhängigkeiten verdrahtet sind. Einige aktuelle Beispiele finden Sie hier: https://docs.zendframework.com/tutorials/getting-started/database-and-models/ – Dennis