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/...

Комментарии • 119

  • @nikitanyn4980
    @nikitanyn4980 Год назад +3

    Топ спикер, смотрю для того, что непонятно очевидно при написании кода. Всем советую! в 2023 актуально

    • @Rclass
      @Rclass  Год назад

      Спасибо за приятный отзыв :)

  • @user-si4qz6ps9o
    @user-si4qz6ps9o 2 месяца назад +1

    ведущий позитивный, класс)

    • @Rclass
      @Rclass  2 месяца назад

      Спасибо, мы стараемся)

  • @AlexeySivak
    @AlexeySivak Год назад +3

    Ребята, Спасибо! Все оказалось проще чем догадывалось. Форма подачи отличная - это талант. Поразило как php схож с c# и вся эта ранее странная бодяга php с asp.

    • @Rclass
      @Rclass  Год назад +1

      Пожалуйста :) Да по большому счету главное понимать суть, а язык лишь инструмент :)

  • @alekseykononenko7897
    @alekseykononenko7897 4 месяца назад +1

    Всё понятно и доступно, осталось только применить полученные знания на практике. Большое спасибо!

    • @Rclass
      @Rclass  4 месяца назад

      Спасибо, мы старались сделать понятно :)

  • @user-mr9by3jv8t
    @user-mr9by3jv8t Год назад +1

    Лучшее объяснение!

    • @Rclass
      @Rclass  Год назад

      Спасибо!

  • @BakhtiyorBahriddinov
    @BakhtiyorBahriddinov 10 месяцев назад +1

    Автору респект. Объясняет простым и понятным языком и еще с конкретными примерами. Уважуха 🙏

    • @Rclass
      @Rclass  10 месяцев назад

      Спасибо, мы старались :)

  • @specificcross
    @specificcross 10 месяцев назад +2

    Класно! Пересмотрев кучу роликов на ютубе на эту тему, а там всё на непонятном языке - будто я при просмотре уже должен знать что такое DI и IoC. И наткнулся на этот канал, после просмотра всё стало понятно ( и это с учетом того , что я в жизни не писал на Php )

    • @Rclass
      @Rclass  10 месяцев назад +1

      Спасибо! Очень приятно что смогли вам помочь разобраться в этой теме :)

  • @cumar8585
    @cumar8585 Год назад +3

    Шикарный лектор умеет рассказать интересно, понятно и не скучно.

    • @Rclass
      @Rclass  Год назад

      Спасибо большое, стараемся для вас :)

  • @user-np8hb3sj6p
    @user-np8hb3sj6p 3 года назад +14

    Всё максимально интересно понятно и доступно рассказано, спасибо большое!

    • @pozytron-code
      @pozytron-code 3 года назад +1

      человек не успел рассказать, 5 минут назад всё началось - но уже доступно рассказано?)))) magic ))

    • @Rclass
      @Rclass  3 года назад +1

      Он тот, кто осилил С++ за 21 день. Если вы понимаете о чем я :)

  • @IvanBlaBlaBla
    @IvanBlaBlaBla 3 года назад +10

    Как всегда - лучше один раз увидеть, чем два раза прочитать ))

    • @Rclass
      @Rclass  3 года назад +1

      Именно так :)

    • @romanliapkin5174
      @romanliapkin5174 2 года назад

      Я раз 30 читал , непонятно было.

  • @mr.cannabis471
    @mr.cannabis471 3 года назад +19

    Спасибо, наконец то стало намного понятнее. Но уверен буду пересматривать ещё раз 10)

    • @Rclass
      @Rclass  3 года назад +1

      Спасибо, мы старались :)

  • @erikdeveloper
    @erikdeveloper Год назад +3

    Супер доклад, нравится когда рассказываешь своим языком, без академических терминов 😅

    • @Rclass
      @Rclass  Год назад

      Спасибо, стараемся для вас)

  • @user-ok8dp3mt1w
    @user-ok8dp3mt1w 3 месяца назад

    Очень круто розжевал.
    Иногда автор затачивает видео под какой-то конкретный язык что на мое мнение не является правильным так как язык это просто инструмент.
    В этом видео все будет понятно в не зависимости от языка программирования.
    Спасибо)

    • @Rclass
      @Rclass  3 месяца назад

      Именно этого и хотелось добиться, спасибо :)

  • @kafychannel
    @kafychannel Год назад +1

    получил удовольствие, спасибо огромное :))

    • @Rclass
      @Rclass  Год назад

      Спасибо за отклик, мы старались :)

  • @DIMANVAZ04
    @DIMANVAZ04 Год назад

    Вы лучший. Хоть я и джаваскриптизёр.

    • @Rclass
      @Rclass  Год назад +1

      Спасибо! Джавскриптизёр - это надо запомнить. Все мы нет-нет да и джаваскриптизёры.

  • @yuryitikhonoff9631
    @yuryitikhonoff9631 2 года назад +3

    Cool. Great manner of explanation. I wish all hosts of coding conferences use such a manner instead of bunch of silly memes. Good job.

    • @Rclass
      @Rclass  2 года назад +2

      Thanks! We also like memes but use them only for illustrative purposes.

  • @user-nf1td4hh7y
    @user-nf1td4hh7y 2 месяца назад +1

    Антон, вы супер объясняете! Спасибо!

    • @Rclass
      @Rclass  2 месяца назад

      Спасибо, стараемся :)

  • @danilx6239
    @danilx6239 Год назад +1

    Очень круто, не ожидал. Всё понятно, не скучно и супер-подробно. Не смотря на то, что я пишу на JS, ваши примеры помогли понять основную суть. Только не понял, откуда берется файл конфига и почему емеил и id-телеграмма туда уже зашити. Но это наверное больше пхп-тема, а не JS... Спасибо за материал!

    • @Rclass
      @Rclass  Год назад

      Спасибо, мы старались сделать понятно :)

  • @dkorotaeva
    @dkorotaeva 3 года назад +4

    Ничего не понятно, но очень интересно - так было до этого видоса) Теперь все понятно, спасибо! Буду смотреть ещё!))

    • @Rclass
      @Rclass  3 года назад

      Спасибо, мы старались :)

  • @ruPhotoLamb
    @ruPhotoLamb Год назад +3

    Прекрасная пподача материала! Спасибо за простые примеры и наглядные слайды 👍

    • @Rclass
      @Rclass  Год назад

      Спасибо за отклик :) Мы старались :)

  • @bra1nlagwe
    @bra1nlagwe 3 года назад +1

    Здорово! буквально на пальцах с примерами и мемасиками!)

    • @Rclass
      @Rclass  3 года назад

      Спасибо, мы старались :)

  • @user-kq3oo1dx4v
    @user-kq3oo1dx4v 7 месяцев назад +1

    Отлично, весело, и просто! Маладец!!!!

    • @Rclass
      @Rclass  7 месяцев назад

      Стараемся для вас :)

  • @gekka-group
    @gekka-group Год назад

    Очень много видео смотерл по этой теме и читал статьи на хабре, но этот видеоролик самый ценный из всех что я позновал по DI

    • @Rclass
      @Rclass  Год назад

      Спасибо за приятный отклик :)

  • @rusichvil
    @rusichvil 2 года назад +2

    Спасибо за интересное видео! Отдельный плюс за подачу материала!

    • @Rclass
      @Rclass  2 года назад

      Спасибо что с нами :) Стараемся для вас :)

  • @kudrvet
    @kudrvet 3 года назад +1

    Классный контент! Разжевано и с примерами ! Продолжайте в том же духе)

    • @Rclass
      @Rclass  3 года назад

      Спасибо, мы старались :)

  • @Dethrockerbass
    @Dethrockerbass Год назад

    Не знаю, как я сюда попал, но теперь понял, как работает (внезапно) спринг. Спасибо!

    • @Rclass
      @Rclass  Год назад

      Всегда пожалуйста :)

  • @alenka_mak
    @alenka_mak Год назад +4

    Великолепно изложено! Антон просто супер спикер))))

    • @Rclass
      @Rclass  Год назад

      Спасибо :)

  • @user-ve7dz4mt6s
    @user-ve7dz4mt6s 3 года назад +1

    Спасибо как всегда🙏🙏 Такая инфа полезная ещё и бесплатно!!

    • @Rclass
      @Rclass  3 года назад

      Спасибо, мы старались :)

  • @user-ei5ve3zl7k
    @user-ei5ve3zl7k 3 года назад +6

    Круто, не забрасывайте контент. Благодаря вам освоил базу по бд.

    • @OkulovAnton
      @OkulovAnton 3 года назад +2

      Круто! Вам спасибо что смотрите :)

    • @Rclass
      @Rclass  3 года назад +1

      Спасибо что вы с нами :)

  • @web_kub
    @web_kub 3 года назад +2

    Супер, спасибо! Все стало ясно!

    • @Rclass
      @Rclass  3 года назад

      Спасибо, мы старались :)

  • @twentxx
    @twentxx Год назад +1

    Докладчик топ 🔝👍 Жги ещё 😅

    • @Rclass
      @Rclass  Год назад

      Спасибо, мы старались)

  • @ProRezak
    @ProRezak 3 года назад +4

    Давно следую DI, но только теперь все стало ясно от и до. Спасибо

    • @Rclass
      @Rclass  3 года назад

      Спасибо, мы старались :)

  • @fazleev
    @fazleev 2 года назад +1

    Великолепное объяснение

    • @Rclass
      @Rclass  2 года назад

      Спасибо, мы старались :)

  • @underpershin
    @underpershin Год назад

    Отличное виде, спасибо!!!❤

    • @Rclass
      @Rclass  Год назад

      Стараемся для вас :)

  • @mohamednabil9509
    @mohamednabil9509 11 месяцев назад

    Great explanation

    • @Rclass
      @Rclass  11 месяцев назад

      Thx!

  • @winstonwolf2981
    @winstonwolf2981 Год назад

    Отличное объяснение, спасибо

    • @Rclass
      @Rclass  Год назад

      Спасибо, для вас стараемся :)

  • @AlexKhaizeman
    @AlexKhaizeman 3 года назад +2

    Лайк за мемасы =)

  • @saharaprotocol
    @saharaprotocol 8 месяцев назад

    Спасибо мужик.

    • @Rclass
      @Rclass  8 месяцев назад

      Для вас стараемся)

  • @rvkrasyl
    @rvkrasyl Год назад

    Крута подача матеріалу, дуже дякую за відео

    • @Rclass
      @Rclass  Год назад +1

      будь ласка!

  • @Mr43046721
    @Mr43046721 Год назад

    Очень крутой рассказчик))

    • @Rclass
      @Rclass  Год назад

      Спасибо, очень приятно ^_^

  • @username739
    @username739 2 года назад +1

    Подписка однозначно)

    • @Rclass
      @Rclass  2 года назад

      Спасибо, мы старались :)

  • @kaktusv6
    @kaktusv6 2 года назад

    Кайфовая презентация

    • @Rclass
      @Rclass  2 года назад

      Спасибо, мы старались :)

  • @user-bv8tl7mh9j
    @user-bv8tl7mh9j 3 года назад +3

    Лайк за примеры👍
    Понять получилось быстрее в отличие от чтения документации

    • @AlexKhaizeman
      @AlexKhaizeman 3 года назад +1

      Поэтому и пришлось снять... Я прочитала документацию и отправила мужика-на-фоне-ковра :(

    • @Rclass
      @Rclass  3 года назад +1

      А как же лайк за мемасы(

  • @jlvby
    @jlvby 2 месяца назад +1

    У Зандстры в книге есть рекурсивный DI-контейнер

    • @Rclass
      @Rclass  2 месяца назад

      🚀

  • @wickedtorpedo75
    @wickedtorpedo75 3 месяца назад

    хочется чтобы учитель был моим тимлидом в проекте

    • @Rclass
      @Rclass  2 месяца назад

      Спасибо, стараемся :)

  • @ardixq
    @ardixq 2 года назад +1

    норм обьясняешь

    • @Rclass
      @Rclass  2 года назад

      Спасибо, мы старались :)

  • @awesomegamedev
    @awesomegamedev 2 года назад +2

    Хорошее объяснение и видео, но Dependency Injection, начиная с 24:08 похоже на ООП головного мозга.
    Вместо того, что нам предоставляет язык, мы (вернее создатели фреймворка) наинженерили свой "язык" в виде объекта конфигурации, который я на 99% уверен не строго-типизированный, а значит которому будет свойственна ранее описанная проблема: код (редкая, но дорогая покупка) упадёт только, когда до него дойдёт исполнение.
    При этом с Service Locator по сути описана только одна проблема: нестрогая типизация и соответствующая возможность подставить что угодно во что угодно, и она решается ... использованием строго типизированного языка (внезапно). Я не знаток PHP, но на TypeScript можно просто объявить объект:
    const Locator = {
    notifySender: new EmailNotifySender('asdf'),
    userLoggerNotifier: new UserLoggedNotifier(),
    }
    И если хоть какого-то метода где-то будет не-хватать, то код просто не скомпилится.
    Да, это глобальный объект, но Dependency Injection Container - это по сути тоже глобальный объект, просто неявный.
    А из-за того, что он неявный, кстати, тоже возникает куча проблем по типу невозможности нормально использовать в редакторе кода функции "Find all references". Мне приходилось работать в одном таком проекте и разбираться в магических скрытых связях того, что откуда что вызывает.

    • @Rclass
      @Rclass  2 года назад

      Нет желания вас переубеждать. Если вас устраивает сервис-локатор и вы не сталкиваетесь с проблемами, при его использовании, то тогда нет смысла его менять на DI :)

  • @SemyonF89
    @SemyonF89 6 месяцев назад +1

    Вот с таким тимЛидом можно работать!

    • @Rclass
      @Rclass  6 месяцев назад +1

      Ну так мы и работаем :) И очень довольны :)

    • @SemyonF89
      @SemyonF89 6 месяцев назад

      @@Rclass Везёт :D

  • @alexandrmakovkin7364
    @alexandrmakovkin7364 Год назад +1

    классно объяснил. было бы не плохо основные паттерны программирования послушать

    • @Rclass
      @Rclass  Год назад

      Не первый раз уже получаю такие запросы, можно попробовать

    • @alexandrmakovkin7364
      @alexandrmakovkin7364 Год назад

      @@Rclass спасибо. с DI получилось отлично.

  • @websoda
    @websoda 3 года назад +2

    привет с ютуба

    • @OkulovAnton
      @OkulovAnton 3 года назад +1

      Привет, Саня!

    • @Rclass
      @Rclass  3 года назад +1

      Привет! 👋

  • @andreysvitlov7807
    @andreysvitlov7807 3 года назад +1

    а какая будет структура классов и код если надо отправить и/или по email и telegram в зависимости от настроек пользователя ? и не на email указаный при инициализации а на email пользователя ?

    • @Rclass
      @Rclass  3 года назад

      В каждом отдельном случае надо рассматривать ситуацию отдельно :)

  • @DIEsel27031992
    @DIEsel27031992 Год назад +1

    Есть ли способ как-то отлавливать ошибки регистрации реализаций для интерфейсов в контейнере (например, отсутствие реализации для какого-то интерфейса, которую забыли указать) во время компиляции, а не в рантайме?

    • @Rclass
      @Rclass  Год назад

      Если я ничего не путаю, то Symfony при компиляции кеша так и делает. Но это все равно по большому счету рантайм. Как в C# / Java не подскажу( Скорее зависит от конкретной реализации.

    • @DIEsel27031992
      @DIEsel27031992 Год назад

      @@Rclass про Delphi можно не спрашивать? 😀

  • @kavabanger88
    @kavabanger88 8 месяцев назад +1

    Так ДИ это тот же сервис локатор, просто механизм этот сам подставляет компоненты куда надо а не мы ручками?

    • @Rclass
      @Rclass  7 месяцев назад

      В этом и есть их различие)

  • @alexanderstepin
    @alexanderstepin Год назад +1

    А в чем отличие service locator от паттерна реестр(registry)?

    • @Rclass
      @Rclass  Год назад +1

      По сути ни в чем :)

  • @litvinenkow
    @litvinenkow Год назад

    laravel конечно круче это всё делает и думать не надо, но в symfony немножко всё-таки думать придётся)

    • @Rclass
      @Rclass  Год назад

      Рано или поздно надо будет думать) И вот лучше рано, как показывает практика :)

  • @user-yr9rq7we2n
    @user-yr9rq7we2n 9 месяцев назад +1

    Факт это что?

    • @Rclass
      @Rclass  9 месяцев назад

      Это наш старенький и уже давно заброшенный фреймворк)