Внедрение зависимостей НА ПАЛЬЦАХ!

Поделиться
HTML-код
  • Опубликовано: 27 авг 2024
  • Telegram-канал: t.me/rahim_mur...
    Instagram: / rahim.muratov
    Сайт: marlindev.ru
    Видеоролик о том, что такое Внедрение зависимостей(Dependency Injection)

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

  • @ToBeCloser007
    @ToBeCloser007  6 лет назад +56

    Привет. Объяснил самым доступным способом как мог. Надеюсь что будет полезно.

    • @Belyaev7
      @Belyaev7 6 лет назад +1

      Все понятно, четко и без воды. Спасибо!

    • @user-nf1xl7in5w
      @user-nf1xl7in5w 5 лет назад +5

      Спасибо за пояснения. Напридумывают с*ки словей. Всю жизнь передавал одни объекты классов в другие объекты, точно так же как переменные и безымянные функции, но не знал что это оно и есть.

    • @DrZlad
      @DrZlad 4 года назад

      Вася Бот и не говори)))

  • @user-tt4mg2jq2b
    @user-tt4mg2jq2b 4 года назад +11

    Просто лучший!)) Наконец-то я осознал всю суть зависимостей) И ещё я заметил, что когда осознаёшь суть, то учить легче становится из-за понимания того, зачем ты это всё делаешь. Спасибо за видео!

  • @forward8229
    @forward8229 11 месяцев назад +1

    Одно из самых лучших описаний DI, которое я видел на просторах ютуба. Отличное качество видео, хороший и понятный пример, хороший поставленный голос. В общем супер

  • @glebtrubeev6506
    @glebtrubeev6506 5 лет назад +5

    Чувак,ты просто лучший,никто кроме тебя не рассказал эту тему лучше для меня.Лайк,подписка

  • @Ivanchela
    @Ivanchela 4 года назад +1

    Спасибо, брат. Действительно очень полезная информация))

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

    Отличный урок. Спасибо!

  • @UIRETU
    @UIRETU 6 лет назад +20

    Первоклассное объяснение без слов лайк

  • @m1niak
    @m1niak 6 лет назад +5

    Боже, это же превосходно! Нереально понятно и круто!

    • @ToBeCloser007
      @ToBeCloser007  6 лет назад

      Андрей, рад что мои видео помогли понять! Крутяк)

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

    Супер. Я пишу на js, но объяснение такое, что всё понятно + хорошие примеры.

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

    Отличный урок. Все понятно, а главное - самым простым языком

  • @user-do2lo3oj7l
    @user-do2lo3oj7l 6 лет назад

    Очень доступно и понятно объяснено. Ждем с нетерпением следующего урока.

    • @ToBeCloser007
      @ToBeCloser007  6 лет назад

      Спасибо. Хорошо. Все ролики будут выходить теперь на сайте. Поэтому подпишитесь чтобы не пропустить

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

    Рахим Сасибо, ты самый лучший!!!

  • @user-eb5dg7pg6l
    @user-eb5dg7pg6l 4 года назад

    Реально лучшее объяснение из всех.

  • @eugene8863
    @eugene8863 5 лет назад

    Не знал php, но ты объясняешь нереально доходчиво и я разобрался. Спасибо братан

  • @pavelivanov523
    @pavelivanov523 6 лет назад +4

    Спасибо, каждый урок полезен и понятен.

  • @KonstantinPrydnikov1
    @KonstantinPrydnikov1 6 лет назад +1

    Музон хорош на заднем фоне, такой объемистый как из долины лилово-алых парусов, погребенных под темными водами у берегов далекой экзопланеты в созвездии Гончих псов. Поэтому его еще чутка надо притушить на 20%, чтобы не врывался в мозг в ответственный момент понимания php dependency injection, но без фанатизма, а то шарма не будет. имхо. Спасибо за уроки - очень качественное оформление и подача

    • @ToBeCloser007
      @ToBeCloser007  6 лет назад

      Константин Прудников 😂 хорошо

  • @Skalebro
    @Skalebro 6 лет назад +6

    Теперь ждем другие патерны IoC, Registry и чем же плох ServiceLocator? Я так понимаю, что это сборник зависимостей, в который ты можешь инжектить нужное.

  • @singlebw4065
    @singlebw4065 4 года назад

    Чуваки создание экземпляра класса это инстанцирование, а создание переменной инициализация.
    Что плохого если в одном классе сделать подключение и запросы?
    class Request{

    private static function dbConnect(){
    $db = new PDO("mysql:host=localhost;dbname=test_bd;","root","");
    return $db;
    }
    public static function requestTable($table, $where="id > 0"){
    $data = self::dbConnect()->prepare("SELECT * FROM $table WHERE $where");
    $data ->execute();
    $result = $data->fetchAll(PDO::FETCH_ASSOC);

    return $result;
    }
    }
    $objRequest = new Request();
    $user = $objRequest->requestTable("user","id > 0");

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

    Спасибо, все стало понятно!

  • @user-ru8qb9ze1d
    @user-ru8qb9ze1d 4 года назад +1

    Можно было здесь же объяснить о singleton, пример с бд был бы идеальным) Вообще было бы круто увидеть уроки по алгоритмам, а то в моей практике видел людей которые не могут древовидный массив построить. Продолжай в том же духе)

  • @mrgreizd6730
    @mrgreizd6730 6 лет назад +1

    все четко и понятно! продолжай в томже духе, благодаря тебе будет меньше "щиткода" !

  • @dmitriyshevchenko8188
    @dmitriyshevchenko8188 6 лет назад

    отличная работа Марлин, спасибо за данное видео

  • @mirasnurmukhanbetov1599
    @mirasnurmukhanbetov1599 5 лет назад

    Даже первый принцип solid объяснил) классное видео )

  • @user-lz5di9sb1l
    @user-lz5di9sb1l 2 года назад

    Лайк и подписка за такой контент.

  • @AntonReut
    @AntonReut 4 года назад +2

    Если мы хотим использовать РАЗНЫЕ базы и хранилища то тут еще надо общий интерфейс прикручивать, тогда можно и в базу и в файл и куда угодно сохранять.

  • @xx-ic3xi
    @xx-ic3xi 6 лет назад +3

    Слишком редко выпускаете. Каждый день выпускайте пжл:)

  • @alexanderberman9629
    @alexanderberman9629 4 года назад

    Типизация в конструкторе обязательна, так как абстракцией над поведением мы скрыли реализацию. Код знает только интерфейс, этого достаточно. Хороший пример это GoF паттерн мост (bridge), в свое время (лет 8 назад), лично для меня, он хорошо зашел при реализации приема платежей с разных платежных систем для одного магазина, он и по сей день существует и все работает.

  • @user-sz4nn7oq3r
    @user-sz4nn7oq3r 6 лет назад +2

    Молодец! Спасибо за видео.

  • @user-uz8fr9ro2i
    @user-uz8fr9ro2i 6 лет назад +1

    Лучшее обьснение! Спасибо!

  • @user-cx4xq2jv9d
    @user-cx4xq2jv9d 5 лет назад

    Спасибо за видео. Действительно очень познавательно!

  • @elax3r
    @elax3r 6 лет назад +6

    Класс. Теперь расскажи про DIC

  • @alexeykovernik6024
    @alexeykovernik6024 4 года назад

    Спасибо за видео. Что за тема стоит на PHPStorm? Постоянно ей пользуешься или только для видео?)

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

    Вай, на примере работы с базой очень хорошо зашло.

  • @nikitaosmakovskiy7818
    @nikitaosmakovskiy7818 5 лет назад

    Хорошее и полезное видео) Очень хорошо объяснят что такое зависимости в целом)
    Есть один вопрос: Правильно ли будет, в данном примере, использовать абстрактный класс "Connection"?

  • @typepeak
    @typepeak 6 лет назад

    Привет Рахим! Объяснил - хорошо, не по psr - плохо.
    Из-за этого php - никто не любит. Каждый пишет как ему удобно.
    У тебя много подписчиков - на тебе ответственность, приучай их правильно писать. Пожалуйста!

  • @user-wz9vl9li7q
    @user-wz9vl9li7q 3 года назад

    Спасибо! Всё очень понятно!

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

    Надо было пример привести с наркоманом и шприцом. Получилось бы в тему 😃

  • @Skalebro
    @Skalebro 6 лет назад

    Все гуд, спасибо )

  • @alexeyimashev7837
    @alexeyimashev7837 6 лет назад

    Отличное видио! Хотелось бы видио про "паттерны проектирования php и когда их нужно использовать, а когда не стоит". Cам используешь паттерны проектирования?

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

    не вижу di передача объекта в качестве параметра? Это di????????????

  • @myprojects2749
    @myprojects2749 6 лет назад

    Спасибо за новые рекомендации.

  • @theOneUser
    @theOneUser 5 лет назад

    Привет. Спасибо, все понятно объяснил!!

  • @cristianghirba6563
    @cristianghirba6563 4 года назад

    ++++ Best explanation ever!!!

  • @fusome
    @fusome 4 года назад

    Спасибо Вам огромное!

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

    Спасибо!

  • @kalobyte
    @kalobyte 5 лет назад

    а я все откладывал эту тему, думал что-то сложное
    за такими заумными словами скрыты очевидные вещи, которые ты и так уже знал, только не знал страшных слов-названий
    а тут в названии ролика я не увидел страшных слов и решил просто посмотреть, а в середине ролика оно внезапно и вылезло
    ну я решил уже дальше досмотреть и оказалось, что ничего страшного нет

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

    Когда используешь dependency injection но не знаешь что такое dependency injection ;) Спасибо за разьеснение

  • @olegborodko1801
    @olegborodko1801 5 лет назад

    Респект уже за то что нет собачек и кошечек. Еще 'нравятся' примеры с пицей и другой херней. Никак через такое не въезжаю. Спасибо. просто и понятно

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

    Топ!

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

    Красивая тема для ide как называется?

  • @user-uz4ry4zf3d
    @user-uz4ry4zf3d 3 года назад

    А почему не сделать в конструкторе билдера Connection::make?

  • @ivanaaa6049
    @ivanaaa6049 5 лет назад +6

    Рассказал так, что Dependency injection- это только разбиение на классы по функционалу и ничего про проблемы зависимосей в коде. Лучше это не смотреть: вы все неправильно поймете.

    • @alexanderberman9629
      @alexanderberman9629 4 года назад

      Ну почему, частный случай DI. Абстракцией закрыли реализацию. А если там не PDO, а к примеру Connector с LazyLoad, вполне норм. Сам DI для чего был придуман?

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

      @@faizulla5838 Согласен.

  • @Miha-wm8ms
    @Miha-wm8ms 2 года назад +1

    а ты хорош

  • @ivanaktau
    @ivanaktau 6 лет назад

    Спасибо! Вопрос - Обязательно ли внедрять зависимости через конструктор?

    • @ToBeCloser007
      @ToBeCloser007  6 лет назад +1

      Ivan Makhambetov если определенный метод зависит от другого компонента, то можно использовать инъекцию метода. А если весь класс то через конструктор

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

    спс

  • @singlebw4065
    @singlebw4065 4 года назад

    Получается что методы со словом static никакого отношения не имеют к экземплярам класса. В классе описываются как методы для будущего экземпляра так и просто методы класса которые делают свою абракадабру при обращении к ним и у класса свой контекс self, а у экземпляра объекта свой this. Я вроде как так понял?

  • @delifeful
    @delifeful 4 года назад

    привет, подскажи пожалуйста как ты так красиво выводишь var_dump он же не поддерживает такую красоту на выходе?

    • @ToBeCloser007
      @ToBeCloser007  4 года назад

      Привет! Есть видео на канале про var_dump. Там все рассказал)

  • @baqdaulet5929
    @baqdaulet5929 6 лет назад

    Вот это педантизм, все супер !!!

  • @konstantin7795
    @konstantin7795 6 лет назад

    Хорошее видео

  • @user-xc2xp7xf3h
    @user-xc2xp7xf3h 5 лет назад

    Я вот понял что классы используются как шаблоны (грубо говоря).
    Все вроде понятно, но вот сам код, где создаются объекты и работа с ними как должен быть написан?
    Вот нужно нам сделать регистрацию - там один сценарий будет (одни объекты создаются и работа с ними)
    Нужно сделать авторизацию - другие
    Мы должны для каждого действия создавать новый файл и на него ссылаться при переходе (нажимаем на авторизацию и нас перебрасывает на файл authorization.php, где используются нужные нам объекты)????
    Я вот не понимаю...
    Мне сказали реализовать проект на ООП без паттернов. В случае с MVC, там просто через маршрутизатор мы обращаемся к нужным методам контроллера.
    А как без паттерна это реализовать я не понимаю :(

    • @ToBeCloser007
      @ToBeCloser007  5 лет назад

      Создайте объект Пользователь у которого есть метод Регистрации. Такой подход будет работать без MVC

    • @user-xc2xp7xf3h
      @user-xc2xp7xf3h 5 лет назад

      @@ToBeCloser007 мы на ссайте ссылаемся на определенный файлик со сценарием, в которых используются классы. Вот нужно мне на странице отобразить все статьи. Я ссылаюсь на файлик showPosts.php, в нем используется класс posts, к примеру...

  • @user-wf5jv1me2b
    @user-wf5jv1me2b 3 года назад

    💣

  • @rasel757
    @rasel757 6 лет назад

    Норм молодец !

  • @rootwood2737
    @rootwood2737 5 лет назад

    Да, все круто... Но, а разве обязательно писать statement в
    ...$db->query(statement:’SELECT...??

    • @rootwood2737
      @rootwood2737 5 лет назад

      или это побочный эффект от пхп шторма??

    • @alexd2133
      @alexd2133 5 лет назад +2

      @@rootwood2737 Сам спросил... сам ответил... =)

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

    Внедрение SQL инъекции))))
    $db->select('users; drop table users;')

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

      так-то да, но в данном случае нет. потому что параметр для метода select мы пишем сами, а не принимаем его от фронта. так что в данном примере в принципе все ок

  • @eugenesidelnyk4600
    @eugenesidelnyk4600 4 года назад +1

    8:21 как ты их поменял?

    • @qAntBcn
      @qAntBcn 4 года назад

      Это phpdtorm фишка, она так же помогает если ,asaksasm меняешь на h2 только вначале меняешь он в конце сам дописывает, тут так же с ковычкой, он еще и внутри ковычек автоматом экранирует слеши и прочее

    • @eugenesidelnyk4600
      @eugenesidelnyk4600 4 года назад

      @@qAntBcn как это включить в настройках?

  • @user-vn2nx1yq9e
    @user-vn2nx1yq9e 4 года назад

    а сервис контейнер что?

  • @ivashchuk
    @ivashchuk 6 лет назад

    Что за плагин для браузера подсвечивает var_dump ?

    • @ToBeCloser007
      @ToBeCloser007  6 лет назад

      Hardc0re xdebug

    • @user-wx8vw9lt8u
      @user-wx8vw9lt8u 6 лет назад

      Вы спрашиваете об этом? xdebug.org/docs/all_settings

  • @oleslav07
    @oleslav07 4 года назад

    лайк, подписка, колокольчик.

  • @buridansass916
    @buridansass916 5 лет назад

    Ты бог

  • @user-ru8qb9ze1d
    @user-ru8qb9ze1d 4 года назад

    Divide et impera.

  • @justkrybik
    @justkrybik 5 лет назад

    Я понимаю что видео не о том... Но root ... Ужасный пример подаете.