SlideShare a Scribd company logo
Dependency injection
outsourcing development
quazar.dn.ua
Стадник Андрей
Drupal & Symfony Developer
Dependency Injection
Dependency Injection Andrey Stadnik(enemis)
Dependency Injection Andrey Stadnik(enemis)
Зависимость
Зависимость
Проблемы зависимостей
● Невозможность Unit тестирования
● Постоянный рефакторинг при малейшем
изменении структуры зависимости
● Невозможность использование интерфейсов
Рефакторинг
Другая проблема
Для работы с классом нужно
не забыть о всех его зависимостях,
и вызвать соответствующие set методы!
Как всего этого избежать?
Dependency Injection спешит на
помощь
Inversion of Control (инверсия
управления)
● Factory Method
● Service Locator
● Dependency Injection
Реализации Dependency injection
● Phemto
● Pimple
● Symfony 2 Dependency
Injection
Способы внедрения
●Внедрение в конструкторе - сonstructor Injection
●Внедрение в методе - setter Injection
●Внедрение в свойство - Property Injection
Setter injection
Constructor injection
Конфигурирование
Yaml конфиг:
Конфигурирование
PHP конфиг:
Scopes
● container (по умолчанию): Одна итаже
instance объекта в любое время
● prototype: Каждый раз новая instance
● request – каждый подзапрос новая instance
Фабрики крестьянам
Dependency Injection Andrey Stadnik(enemis)
Parent Service
Composer.phar
Последние приготовление
Использование
IoC & Di – все проблемы решены?
Плюсы:
Минусы:
● Отсутствие зависимостей
● Легкость тестирования
● Очень высокий уровень абстракций
●Легкость расширения замены любых компонентов
● Резкое снижение производительности
● Более высокая стоимость разработки
Практический пример DI
Service custom serializer
Serializer workflow
Кодинг :)
Serializer.yml
Компилирование контейнера
Проходит в несколько проходов основано на интерфейсе
CompilerPassInterface
Необходимо для:
Убирание зацикливания
Убирание из общего контейнера приватных и
абстрактных сервисов
Добавление алиасов
Определения тегированных сервисов
Пример реализации прохода
компилятора
Dependency Injection Andrey Stadnik(enemis)
Dependency Injection Andrey Stadnik(enemis)
Dependency Injection Andrey Stadnik(enemis)
Dependency Injection Andrey Stadnik(enemis)
Dependency Injection Andrey Stadnik(enemis)
Dependency Injection Andrey Stadnik(enemis)
Стадник Андрей
Symfony & Drupal developer
Mail:enemis@mail.ru
Skype:enemis-87
quazar.dn.ua

More Related Content

PPT
зуева татьяна - опыт автоматизации тестирования в Agile проекте
PPTX
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщика
PPTX
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
PPTX
Расширяемая платформа для создания и управления автоматизированными тестами н...
PPTX
Эволюция автотестирования на Selenium
PPTX
About Testers
PPTX
Автоматизация тестирования ролей и привилегий
PPT
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
зуева татьяна - опыт автоматизации тестирования в Agile проекте
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Расширяемая платформа для создания и управления автоматизированными тестами н...
Эволюция автотестирования на Selenium
About Testers
Автоматизация тестирования ролей и привилегий
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium

What's hot (19)

PPTX
Промышленная разработка ПО. Лекция 2. Инструменты
PPTX
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
PDF
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
PDF
DESIGN PATTERNS? EASY!
PDF
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
PPTX
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
PDF
Визуализация покрытия автоматизированными UI тестами
PPTX
Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...
PPTX
Artem Shabarshin. CSEDays
PPT
лившиц владимир - независимое тестирование миф
PPTX
Continuous Integration для QA
PPT
Тестирование инсталляторов
PPTX
Web driver история одной миграции
PDF
Как перестать бояться и начать автоматизировать
PPTX
Практика тестирования web сервисов
PPTX
Code review как средство обеспечения качества программного обеспечения
PPTX
Test Automation Wargaming SQA Days 17
PPTX
Automation Overview
PPTX
Crucible или почему для Code Review нужна не только голова, но и инструмент
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
DESIGN PATTERNS? EASY!
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Визуализация покрытия автоматизированными UI тестами
Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...
Artem Shabarshin. CSEDays
лившиц владимир - независимое тестирование миф
Continuous Integration для QA
Тестирование инсталляторов
Web driver история одной миграции
Как перестать бояться и начать автоматизировать
Практика тестирования web сервисов
Code review как средство обеспечения качества программного обеспечения
Test Automation Wargaming SQA Days 17
Automation Overview
Crucible или почему для Code Review нужна не только голова, но и инструмент
Ad

Dependency Injection Andrey Stadnik(enemis)