• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ciklum Odessa PHP Saturday - Dependency Injection
 

Ciklum Odessa PHP Saturday - Dependency Injection

on

  • 1,075 views

Ciklum Odessa PHP Saturday - Dependency Injection

Ciklum Odessa PHP Saturday - Dependency Injection

Statistics

Views

Total Views
1,075
Views on SlideShare
875
Embed Views
200

Actions

Likes
1
Downloads
13
Comments
1

7 Embeds 200

http://www.ciklum.net 155
http://www.ciklum.com 22
http://my_test.ciklum.net 12
http://ciklum.com 6
http://ciklum.net 2
http://careers.ciklum.com 2
http://translate.googleusercontent.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \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

Ciklum Odessa PHP Saturday - Dependency Injection Ciklum Odessa PHP Saturday - Dependency Injection Presentation Transcript

  • www.ciklum.netDependency Injection Pavel Voznenko PHP Developer, CSC Project Office
  • Мы сегодня поговорим о...1. Dependency2. Inversion of Control3. Dependency Injection4. DI Container5. DI Containers (Phemto) www.ciklum.net 2
  • 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. Критерии по Роберту Мартину: • Жесткость - изменения влекут за собой другие изменения • Хрупкость - изменения вызывают поломку • Неподвижность - нельзя использовать повторно • Вязкость архитектуры - проще писать «плохой» код чем «хороший» www.ciklum.net 9
  • Inversion of Control Инверсия управления www.ciklum.net 10
  • Принцип инверсии зависимостей Модули верхнего уровня не должны зависеть от модулей нижних уровней www.ciklum.net 11
  • Техники реализации1. Factory method2. Service Locator3. Dependency Injection www.ciklum.net 12
  • Dependency Injection Внедрение зависимостей www.ciklum.net 13
  • Внедрение зависимостей - это... Настройка объекта извнес помощью передачи зависимых объектов через конструктор (метод, атрибут) www.ciklum.net 14
  • Внедрение зависимостей www.ciklum.net 15
  • ЗависимостиUserClass Session Db Внедрение Db Session UserClass www.ciklum.net 16
  • Способы внедрения зависимостей- Constructor Injection (через конструктор)- Setter Injection (через метод)- Property Injection (через атрибут) www.ciklum.net 17
  • 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. Принцип единой ответственности3. Критерии по Роберту Мартину: • Жесткость - изменения не влекут за собой другие изменения • Хрупкость - изменения не вызывают поломку • Неподвижность - можно использовать повторно • Вязкость архитектуры - нужно писать хороший код! www.ciklum.net 24
  • DI Контейнер www.ciklum.net 25
  • Зависимость объектовUserClass Session Db UserClass Session Db www.ciklum.net 26
  • Порядок внедрения зависимостей DI Container 1. Db 2. Session 3. UserClass www.ciklum.net 27
  • Простой контейнер 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контейнер (всего три файла)– выявление всех зависимостейобъекта www.ciklum.net 36
  • Phemto www.ciklum.net 37
  • Phemto www.ciklum.net 38
  • Phemto www.ciklum.net 39
  • PhemtoКонтроль жизненного цикла объектов:- Всегда создает новый экземпляр объекта- Отдает ссылки на один и тот же экземпляр- Хранит экземпляр объекта в системнойпеременной PHP $_SESSION www.ciklum.net 40
  • Полезные ссылки- 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
  • Спасибо Вам! Можно задавать вопросы - P-URL: http://ow.ly/99dvA - Skype: p.voznenko - Twitter: pvoznenko - E-mail: p.voznenko@gmail.com www.ciklum.net 42