Your SlideShare is downloading. ×
0
www.ciklum.netDependency Injection                    Pavel Voznenko      PHP Developer, CSC Project Office
Мы сегодня поговорим о...1. Dependency2. Inversion of Control3. Dependency Injection4. DI Container5. DI Containers (Phemt...
Dependency Зависимость    www.ciklum.net   3
Зависимость         www.ciklum.net   4
Зависимость Dependency  Detected!         www.ciklum.net   5
Зависимость  UserClass()       DbClass()         www.ciklum.net   6
Зависимость- Class- Interface                       www.ciklum.net   7
Зависимость                          0_о?         www.ciklum.net          8
Чем плоха зависимость?1. Сложность в тестировании2. Критерии по Роберту Мартину: • Жесткость - изменения влекут за собой д...
Inversion of Control Инверсия управления        www.ciklum.net   10
Принцип инверсии зависимостей    Модули верхнего уровня не должны зависеть от    модулей нижних уровней                  w...
Техники реализации1. Factory method2. Service Locator3. Dependency Injection                www.ciklum.net   12
Dependency Injection Внедрение зависимостей          www.ciklum.net   13
Внедрение зависимостей - это...            Настройка объекта         извнес помощью   передачи зависимых объектов      чер...
Внедрение зависимостей              www.ciklum.net   15
ЗависимостиUserClass      Session               Db        Внедрение   Db           Session           UserClass            ...
Способы внедрения зависимостей- Constructor Injection (через конструктор)- Setter Injection (через метод)- Property Inject...
Constructor Injection              www.ciklum.net   18
Setter Injection            www.ciklum.net   19
Property Injection             www.ciklum.net   20
Еще один пример DI            www.ciklum.net   21
Еще один пример DI            www.ciklum.net   22
Простое тестирование             www.ciklum.net   23
Чем хороша внедрения          зависимостей?1. Возможность тестирования любого класса виерархии зависимостей2. Принцип един...
DI Контейнер    www.ciklum.net   25
Зависимость объектовUserClass       Session           Db               UserClass                Session                   ...
Порядок внедрения зависимостей   DI Container                    1. Db                                   2. Session       ...
Простой контейнер            www.ciklum.net   28
Чего не хватает?- Гибкости- Возможности настраивать                www.ciklum.net   29
Простой контейнер Фабиена                www.ciklum.net   30
Простой контейнер Фабиена                www.ciklum.net   31
Есть одно ноКонтейнер может стать      избыточным          www.ciklum.net   32
DI Контейнеры     www.ciklum.net   33
DI Контейнеры- Symfony Dependency Injection- Pico Container- Phemto- и другие :)                   www.ciklum.net   34
Phemto www.ciklum.net   35
Phemto– автор Маркус Бэйкер– сайт проекта: http://phemto.sourceforge.net– это легкий, автоматизированный DIконтейнер (всег...
Phemto         www.ciklum.net   37
Phemto         www.ciklum.net   38
Phemto         www.ciklum.net   39
PhemtoКонтроль жизненного цикла объектов:- Всегда создает новый экземпляр объекта- Отдает ссылки на один и тот же экземпля...
Полезные ссылки- Martin Fowler:    http://ow.ly/99dmF- Fabien Potencier:    http://ow.ly/99dmX    http://ow.ly/99dnd- Robe...
Спасибо Вам! Можно задавать вопросы                     - P-URL: http://ow.ly/99dvA                     - Skype: p.voznenk...
Upcoming SlideShare
Loading in...5
×

Ciklum Odessa PHP Saturday - Dependency Injection

952

Published on

Ciklum Odessa PHP Saturday - Dependency Injection

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total Views
952
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
14
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript of "Ciklum Odessa PHP Saturday - Dependency Injection"

    1. 1. www.ciklum.netDependency Injection Pavel Voznenko PHP Developer, CSC Project Office
    2. 2. Мы сегодня поговорим о...1. Dependency2. Inversion of Control3. Dependency Injection4. DI Container5. DI Containers (Phemto) www.ciklum.net 2
    3. 3. Dependency Зависимость www.ciklum.net 3
    4. 4. Зависимость www.ciklum.net 4
    5. 5. Зависимость Dependency Detected! www.ciklum.net 5
    6. 6. Зависимость UserClass() DbClass() www.ciklum.net 6
    7. 7. Зависимость- Class- Interface www.ciklum.net 7
    8. 8. Зависимость 0_о? www.ciklum.net 8
    9. 9. Чем плоха зависимость?1. Сложность в тестировании2. Критерии по Роберту Мартину: • Жесткость - изменения влекут за собой другие изменения • Хрупкость - изменения вызывают поломку • Неподвижность - нельзя использовать повторно • Вязкость архитектуры - проще писать «плохой» код чем «хороший» www.ciklum.net 9
    10. 10. Inversion of Control Инверсия управления www.ciklum.net 10
    11. 11. Принцип инверсии зависимостей Модули верхнего уровня не должны зависеть от модулей нижних уровней www.ciklum.net 11
    12. 12. Техники реализации1. Factory method2. Service Locator3. Dependency Injection www.ciklum.net 12
    13. 13. Dependency Injection Внедрение зависимостей www.ciklum.net 13
    14. 14. Внедрение зависимостей - это... Настройка объекта извнес помощью передачи зависимых объектов через конструктор (метод, атрибут) www.ciklum.net 14
    15. 15. Внедрение зависимостей www.ciklum.net 15
    16. 16. ЗависимостиUserClass Session Db Внедрение Db Session UserClass www.ciklum.net 16
    17. 17. Способы внедрения зависимостей- Constructor Injection (через конструктор)- Setter Injection (через метод)- Property Injection (через атрибут) www.ciklum.net 17
    18. 18. Constructor Injection www.ciklum.net 18
    19. 19. Setter Injection www.ciklum.net 19
    20. 20. Property Injection www.ciklum.net 20
    21. 21. Еще один пример DI www.ciklum.net 21
    22. 22. Еще один пример DI www.ciklum.net 22
    23. 23. Простое тестирование www.ciklum.net 23
    24. 24. Чем хороша внедрения зависимостей?1. Возможность тестирования любого класса виерархии зависимостей2. Принцип единой ответственности3. Критерии по Роберту Мартину: • Жесткость - изменения не влекут за собой другие изменения • Хрупкость - изменения не вызывают поломку • Неподвижность - можно использовать повторно • Вязкость архитектуры - нужно писать хороший код! www.ciklum.net 24
    25. 25. DI Контейнер www.ciklum.net 25
    26. 26. Зависимость объектовUserClass Session Db UserClass Session Db www.ciklum.net 26
    27. 27. Порядок внедрения зависимостей DI Container 1. Db 2. Session 3. UserClass www.ciklum.net 27
    28. 28. Простой контейнер www.ciklum.net 28
    29. 29. Чего не хватает?- Гибкости- Возможности настраивать www.ciklum.net 29
    30. 30. Простой контейнер Фабиена www.ciklum.net 30
    31. 31. Простой контейнер Фабиена www.ciklum.net 31
    32. 32. Есть одно ноКонтейнер может стать избыточным www.ciklum.net 32
    33. 33. DI Контейнеры www.ciklum.net 33
    34. 34. DI Контейнеры- Symfony Dependency Injection- Pico Container- Phemto- и другие :) www.ciklum.net 34
    35. 35. Phemto www.ciklum.net 35
    36. 36. Phemto– автор Маркус Бэйкер– сайт проекта: http://phemto.sourceforge.net– это легкий, автоматизированный DIконтейнер (всего три файла)– выявление всех зависимостейобъекта www.ciklum.net 36
    37. 37. Phemto www.ciklum.net 37
    38. 38. Phemto www.ciklum.net 38
    39. 39. Phemto www.ciklum.net 39
    40. 40. PhemtoКонтроль жизненного цикла объектов:- Всегда создает новый экземпляр объекта- Отдает ссылки на один и тот же экземпляр- Хранит экземпляр объекта в системнойпеременной PHP $_SESSION www.ciklum.net 40
    41. 41. Полезные ссылки- Martin Fowler: http://ow.ly/99dmF- Fabien Potencier: http://ow.ly/99dmX http://ow.ly/99dnd- Robert C. Martin: http://ow.ly/99doa- Phemto: http://phemto.sourceforge.net www.ciklum.net 41
    42. 42. Спасибо Вам! Можно задавать вопросы - P-URL: http://ow.ly/99dvA - Skype: p.voznenko - Twitter: pvoznenko - E-mail: p.voznenko@gmail.com www.ciklum.net 42
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×