Inversion of Control, Dependency Injection, DI Container - что это такое и кто все эти люди?
HTML-код
- Опубликовано: 29 апр 2021
- В этом видео мы поговорим о:
- Inversion of Control (Инверсия управления, инверсия контроля)
- Dependency Injection (Инъекция зависимостей, внедрение зависимостей)
- Dependency Injection Container (DI Container)
- Service Locator
Расскажем что это такое и покажем реализацию этих штук на примере PHP.
Пачка примеров и мемасиков, всё как обычно :)
Презентация:
docs.google.com/presentation/...
Топ спикер, смотрю для того, что непонятно очевидно при написании кода. Всем советую! в 2023 актуально
Спасибо за приятный отзыв :)
ведущий позитивный, класс)
Спасибо, мы стараемся)
Ребята, Спасибо! Все оказалось проще чем догадывалось. Форма подачи отличная - это талант. Поразило как php схож с c# и вся эта ранее странная бодяга php с asp.
Пожалуйста :) Да по большому счету главное понимать суть, а язык лишь инструмент :)
Всё понятно и доступно, осталось только применить полученные знания на практике. Большое спасибо!
Спасибо, мы старались сделать понятно :)
Лучшее объяснение!
Спасибо!
Автору респект. Объясняет простым и понятным языком и еще с конкретными примерами. Уважуха 🙏
Спасибо, мы старались :)
Класно! Пересмотрев кучу роликов на ютубе на эту тему, а там всё на непонятном языке - будто я при просмотре уже должен знать что такое DI и IoC. И наткнулся на этот канал, после просмотра всё стало понятно ( и это с учетом того , что я в жизни не писал на Php )
Спасибо! Очень приятно что смогли вам помочь разобраться в этой теме :)
Шикарный лектор умеет рассказать интересно, понятно и не скучно.
Спасибо большое, стараемся для вас :)
Всё максимально интересно понятно и доступно рассказано, спасибо большое!
человек не успел рассказать, 5 минут назад всё началось - но уже доступно рассказано?)))) magic ))
Он тот, кто осилил С++ за 21 день. Если вы понимаете о чем я :)
Как всегда - лучше один раз увидеть, чем два раза прочитать ))
Именно так :)
Я раз 30 читал , непонятно было.
Спасибо, наконец то стало намного понятнее. Но уверен буду пересматривать ещё раз 10)
Спасибо, мы старались :)
Супер доклад, нравится когда рассказываешь своим языком, без академических терминов 😅
Спасибо, стараемся для вас)
Очень круто розжевал.
Иногда автор затачивает видео под какой-то конкретный язык что на мое мнение не является правильным так как язык это просто инструмент.
В этом видео все будет понятно в не зависимости от языка программирования.
Спасибо)
Именно этого и хотелось добиться, спасибо :)
получил удовольствие, спасибо огромное :))
Спасибо за отклик, мы старались :)
Вы лучший. Хоть я и джаваскриптизёр.
Спасибо! Джавскриптизёр - это надо запомнить. Все мы нет-нет да и джаваскриптизёры.
Cool. Great manner of explanation. I wish all hosts of coding conferences use such a manner instead of bunch of silly memes. Good job.
Thanks! We also like memes but use them only for illustrative purposes.
Антон, вы супер объясняете! Спасибо!
Спасибо, стараемся :)
Очень круто, не ожидал. Всё понятно, не скучно и супер-подробно. Не смотря на то, что я пишу на JS, ваши примеры помогли понять основную суть. Только не понял, откуда берется файл конфига и почему емеил и id-телеграмма туда уже зашити. Но это наверное больше пхп-тема, а не JS... Спасибо за материал!
Спасибо, мы старались сделать понятно :)
Ничего не понятно, но очень интересно - так было до этого видоса) Теперь все понятно, спасибо! Буду смотреть ещё!))
Спасибо, мы старались :)
Прекрасная пподача материала! Спасибо за простые примеры и наглядные слайды 👍
Спасибо за отклик :) Мы старались :)
Здорово! буквально на пальцах с примерами и мемасиками!)
Спасибо, мы старались :)
Отлично, весело, и просто! Маладец!!!!
Стараемся для вас :)
Очень много видео смотерл по этой теме и читал статьи на хабре, но этот видеоролик самый ценный из всех что я позновал по DI
Спасибо за приятный отклик :)
Спасибо за интересное видео! Отдельный плюс за подачу материала!
Спасибо что с нами :) Стараемся для вас :)
Классный контент! Разжевано и с примерами ! Продолжайте в том же духе)
Спасибо, мы старались :)
Не знаю, как я сюда попал, но теперь понял, как работает (внезапно) спринг. Спасибо!
Всегда пожалуйста :)
Великолепно изложено! Антон просто супер спикер))))
Спасибо :)
Спасибо как всегда🙏🙏 Такая инфа полезная ещё и бесплатно!!
Спасибо, мы старались :)
Круто, не забрасывайте контент. Благодаря вам освоил базу по бд.
Круто! Вам спасибо что смотрите :)
Спасибо что вы с нами :)
Супер, спасибо! Все стало ясно!
Спасибо, мы старались :)
Докладчик топ 🔝👍 Жги ещё 😅
Спасибо, мы старались)
Давно следую DI, но только теперь все стало ясно от и до. Спасибо
Спасибо, мы старались :)
Великолепное объяснение
Спасибо, мы старались :)
Отличное виде, спасибо!!!❤
Стараемся для вас :)
Great explanation
Thx!
Отличное объяснение, спасибо
Спасибо, для вас стараемся :)
Лайк за мемасы =)
Спасибо мужик.
Для вас стараемся)
Крута подача матеріалу, дуже дякую за відео
будь ласка!
Очень крутой рассказчик))
Спасибо, очень приятно ^_^
Подписка однозначно)
Спасибо, мы старались :)
Кайфовая презентация
Спасибо, мы старались :)
Лайк за примеры👍
Понять получилось быстрее в отличие от чтения документации
Поэтому и пришлось снять... Я прочитала документацию и отправила мужика-на-фоне-ковра :(
А как же лайк за мемасы(
У Зандстры в книге есть рекурсивный DI-контейнер
🚀
хочется чтобы учитель был моим тимлидом в проекте
Спасибо, стараемся :)
норм обьясняешь
Спасибо, мы старались :)
Хорошее объяснение и видео, но Dependency Injection, начиная с 24:08 похоже на ООП головного мозга.
Вместо того, что нам предоставляет язык, мы (вернее создатели фреймворка) наинженерили свой "язык" в виде объекта конфигурации, который я на 99% уверен не строго-типизированный, а значит которому будет свойственна ранее описанная проблема: код (редкая, но дорогая покупка) упадёт только, когда до него дойдёт исполнение.
При этом с Service Locator по сути описана только одна проблема: нестрогая типизация и соответствующая возможность подставить что угодно во что угодно, и она решается ... использованием строго типизированного языка (внезапно). Я не знаток PHP, но на TypeScript можно просто объявить объект:
const Locator = {
notifySender: new EmailNotifySender('asdf'),
userLoggerNotifier: new UserLoggedNotifier(),
}
И если хоть какого-то метода где-то будет не-хватать, то код просто не скомпилится.
Да, это глобальный объект, но Dependency Injection Container - это по сути тоже глобальный объект, просто неявный.
А из-за того, что он неявный, кстати, тоже возникает куча проблем по типу невозможности нормально использовать в редакторе кода функции "Find all references". Мне приходилось работать в одном таком проекте и разбираться в магических скрытых связях того, что откуда что вызывает.
Нет желания вас переубеждать. Если вас устраивает сервис-локатор и вы не сталкиваетесь с проблемами, при его использовании, то тогда нет смысла его менять на DI :)
Вот с таким тимЛидом можно работать!
Ну так мы и работаем :) И очень довольны :)
@@Rclass Везёт :D
классно объяснил. было бы не плохо основные паттерны программирования послушать
Не первый раз уже получаю такие запросы, можно попробовать
@@Rclass спасибо. с DI получилось отлично.
привет с ютуба
Привет, Саня!
Привет! 👋
а какая будет структура классов и код если надо отправить и/или по email и telegram в зависимости от настроек пользователя ? и не на email указаный при инициализации а на email пользователя ?
В каждом отдельном случае надо рассматривать ситуацию отдельно :)
Есть ли способ как-то отлавливать ошибки регистрации реализаций для интерфейсов в контейнере (например, отсутствие реализации для какого-то интерфейса, которую забыли указать) во время компиляции, а не в рантайме?
Если я ничего не путаю, то Symfony при компиляции кеша так и делает. Но это все равно по большому счету рантайм. Как в C# / Java не подскажу( Скорее зависит от конкретной реализации.
@@Rclass про Delphi можно не спрашивать? 😀
Так ДИ это тот же сервис локатор, просто механизм этот сам подставляет компоненты куда надо а не мы ручками?
В этом и есть их различие)
А в чем отличие service locator от паттерна реестр(registry)?
По сути ни в чем :)
laravel конечно круче это всё делает и думать не надо, но в symfony немножко всё-таки думать придётся)
Рано или поздно надо будет думать) И вот лучше рано, как показывает практика :)
Факт это что?
Это наш старенький и уже давно заброшенный фреймворк)