![Page 1: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/1.jpg)
DEPENDENCY INJECTION with PHP
Nikita Groshin / Nguyễn Huy Tuấn
![Page 2: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/2.jpg)
More than 200 employeesMore than 80 developers from different countriesDifferent programming languages and paradigmJava, C++, PHP, JS, Python etc
Cốc Cốc
![Page 3: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/3.jpg)
13 membersPHP, JS, PythonKohana, Zend Framework100% Zend Certificated developers
Frontend and Tools Deprtment
![Page 4: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/4.jpg)
Search engine http://coccoc.vnBrowser http://corom.vnNot only
Core Products
![Page 5: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/5.jpg)
NO. They are USEFUL!Hard code is suck
Dependencies are suck?
![Page 6: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/6.jpg)
Good Dependency
User_Model Article_Model
Dependency
![Page 7: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/7.jpg)
Bad Dependency
User_Model Session
Dependency
![Page 8: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/8.jpg)
Bad
![Page 9: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/9.jpg)
Better
![Page 10: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/10.jpg)
Good
![Page 11: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/11.jpg)
Dependency Injection is bad
High LevelModule
Low LevelModule
Dependency
![Page 12: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/12.jpg)
Good
High LevelModule
Low LevelModule
Abstraction
![Page 13: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/13.jpg)
Constructor injectionSetter injectionInterface injection
Injection types
![Page 14: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/14.jpg)
Interface Injection
![Page 15: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/15.jpg)
Quite easy But why to use it?
![Page 16: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/16.jpg)
Hard to reusePoor isolationHard to testA lot of codeHard to maintainHard to understand
Hard coded dependency
![Page 17: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/17.jpg)
Loose couplingReuse of codeReduce amount of codeClear and UnderstandableExtremely easy to test
Dependency injection
![Page 18: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/18.jpg)
Loose coupling
Reuse of code
Reduce amount of code
Clear and Understandable
Extremely easy to test
Dependency injection
![Page 19: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/19.jpg)
Extremely easy to test
![Page 20: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/20.jpg)
Manual Di management is complicated
![Page 21: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/21.jpg)
We need container!
![Page 22: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/22.jpg)
Disclaimer
Dependency Injection != DI containerDI container use Service Locator Anti-PatternDI container make code 'less native'Powerful tool – use carefulOften Manual injection is enough
![Page 23: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/23.jpg)
How many lines of code we need for simple
DI container?
![Page 24: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/24.jpg)
Twittee
http://twittee.org/ Packed in less than 140 characters, it fits in a tweet. Author Fabien Potencier Production ready
![Page 25: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/25.jpg)
Twittee source
![Page 26: Speaker nguyen huy tuan dependency injection in php](https://reader034.vdocuments.us/reader034/viewer/2022051818/549a3b7fac7959ff2d8b5a81/html5/thumbnails/26.jpg)
Pimple
http://pimple.sensiolabs.org/50 lines of codeFull functionality Author Fabien PotencierProduction ready