Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dependency injection (DI) #12

Open
sensorario opened this issue Mar 7, 2018 · 2 comments
Open

Dependency injection (DI) #12

sensorario opened this issue Mar 7, 2018 · 2 comments
Labels
Stale proposta prossima alla cancellazione

Comments

@sensorario
Copy link
Member

Dependency injection (DI) è un design pattern della Programmazione orientata agli oggetti il cui scopo è quello di semplificare lo sviluppo e migliorare la testabilità di software di grandi dimensioni.

Per utilizzare tale design pattern è sufficiente dichiarare le dipendenze che un componente necessita (dette anche interface contracts). Quando il componente verrà istanziato, un iniettore si prenderà carico di risolvere le dipendenze (attuando dunque l'inversione del controllo). Se è la prima volta che si tenta di risolvere una dipendenza l'injector istanzierà il componente dipendente, lo salverà in un contenitore di istanze e lo ritornerà. Se non è la prima volta, allora ritornerà la copia salvata nel contenitore. Una volta risolte tutte le dipendenze, il controllo può tornare al componente applicativo.

Il pattern Dependency Injection coinvolge almeno tre elementi:

una componente dipendente,
la dichiarazione delle dipendenze del componente, definite come interface contracts,
un injector (chiamato anche provider o container) che crea, a richiesta, le istanze delle classi che implementano delle dependency interfaces.

@sensorario
Copy link
Member Author

Di recente mi é capitato di sentirmi dire “non posso usare la dependency injection perché ho la versione 5.3 di php, quindi non posso usare symfony 4”.

Mi piacerebbe trasformare questo talk in un talk live nel quale ci si possa costruire un dependency injection container utilizzabile anche con versioni obsolete di php.

Coglierei l’occasione per vedere quali alternative open source ci sono già su github ed in particolare dellinterfaccia PSR che consente di sviluppare container standard.

@Fuminshou Fuminshou added the Stale proposta prossima alla cancellazione label Oct 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Stale proposta prossima alla cancellazione
Projects
None yet
Development

No branches or pull requests

2 participants