Che cosa è DI
per e qual è il suo caso d'uso, quando abbiamo ServiceManager
?Zend Di vs contenitori di dipendenza dipendenza ServiceManager
sembrano essere simili in quanto nei file di configurazione sia per zend-di
e zend-servicemanager
possiamo impostare alcune opzioni come aliases
e invokables
.
Sto cercando di capire meglio cosa sta succedendo dietro le quinte con questi componenti e la documentazione non mi ha dato abbastanza informazioni.
Potrebbe per favore dirmi qual è la differenza e quando dovrei usare Di
invece di ServiceManager
?
C'è una buona discussione su contenitori in genere su http://www.php-fig.org/psr/psr-11/meta/ – Dennis
i consigli moderni sembrano essere "non usare DI o SM" da soli, a meno che non siano già parte del tuo framework. Zend utilizza il Service Manager basato sulla fabbrica (che è essenzialmente un contenitore DI limitato), dove devi fare attenzione a * non * iniettare qualsiasi contenitore in una delle tue classi, ma puoi usare il contenitore come parte della configurazione del tuo applicazione. Ad esempio, in Zend puoi utilizzare le strutture del framework stesso per personalizzare il modo in cui le tue dipendenze sono cablate. Alcuni esempi recenti sono qui: https://docs.zendframework.com/tutorials/getting-started/database-and-models/ – Dennis