PHP ООП: внедрение зависимостей и магия рефлексии

preview_player
Показать описание
Почему ООП в современных фреймворках такое замудрёное? - Узнаем за 4 шага:
1. простой нетестируемый код
2. идеи внедрения зависимостей
3. пример тестируемости, когда есть di
4. муки ручной передачи зависимостей и идеи php Reflection

Рекомендации по теме
Комментарии
Автор

Спасибо! Хорошо что есть люди которые легко могут объяснить сложное.

psMOV
Автор

Кучу мест смотрел и не одну статью читал про DI, но в этом ролике единственное, адекватное описание "Зачем?". Конечно, в итоге сам до этого дошел, но сейчас рад, что подтвердилось моё понимание.

armiol
Автор

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

ДанилоКоверсун
Автор

Вы шикарный! Творческих успехов вам! И спасибо!

eb
Автор

Блин ну Лаврик крутой конечно, просто педагог от бога, доносить свои мысли умеет

_diemydarling
Автор

Спасибо большое, все очень понятно. Не каждый так сможет объяснить.

phpuser
Автор

Очень классно чувствую себя, когда смотрю это и понимаю большую часть изложенного. Особенно нравится понимать - ЗАЧЕМ что-то создаётся или убирается. Ранее на другом курсе обучали возможностям языка, но без объяснения ЗАЧЕМ что-то нужно. Здесь с этим совсем иначе, что меня радует
:)

RomanLyashevich
Автор

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

pilyugin
Автор

Было очень интересно посмотреть, хоть я и СиШарпист)😃👍

sergopro
Автор

Во 2 кейсе, где мы колхозно сами реализовали передачу классов в конструктов без интерфйса, мы можем же написать тесты, просто для классов мокМоделей и тд надо унаследоваться от Моделей и переопределить методы же? Поправьте если я не прав? Просто интересно верно ли предположение

EldarOzo
Автор

Хорошее видео. Немного критики внесу. Есть момент, где говорит, что система не может создать объект Model. Корректнее было сказать не может создать объект интерфейса, ведь слушатель может и забыть, что это было интерфейсом, особенно, когда лекция насыщенная. И второе, сделан очень слабый акцент, просто мимолетом упомянулось, что подобные классы контейнеров подходят только для создания классов, не требующих дополнительной настройки, а в принципе состоящие только из классов, создаваемых по умолчанию. Этот косяк данной технологии весьма существеннен. Далее, в-третьих, внедрение правил для интерфейсов и прочие подкрутки и донастройки для отдельных классов приводят уже к тому, что те самые пять сирочек вместо одной всё таки приходиться писать. И если в случае обычного применения интерфейсов нам не надо задумываться, система сама подставит нужное и не будет ругаться, то с контейнерами нужно будет под каждый класс описывать взаимодействие с интерфейсом, что удлинняет код. Спасибо за видео, было полезно и интересно.

Technical_Expert
Автор

Самое странно, что когда обучают подобным темам, всегда упоминают про тестирование, а когда обучают тестированию, то дают примеры уровня:

fun sum (a, b) {return a + b;}

Хоть раз бы показали, как тестируют методы контролера, модели, короче как раз то, что вообще непонятно как тестировать.

EdwardNorthwind
Автор

Все новички полюбят di, когда к ним придёт проект на расширение, но без di, а делать надо =)

anti-bilan
Автор

спасибо за РНР, хотеся больше рнр от хороших педагогов, но сложно найти

_diemydarling
Автор

Дмитрий вы там про атрибуты напутали.
Атрибуты в пхп это аннотации типов в других языках :)

kookaburru
Автор

37 минута. Где причина для чего это все надо. Подтвердите или поправьте меня пожалуйста, если я ошибаюсь. Т.е. когда ты работаешь в команде, ты пишешь часть кода, ты вставляешь свой код в большую программу. И тебе надо проверить, как твой код будет взаимодействовать со всем остальным окружением. Т.е. в первую очередь тебе нужно защитить себя, доказать с помощью тестов, что твой код выполняется согласно требований. Если пишешь код один, каким бы он большим не был, ты его знаешь от и до, ты знаешь все его потоки, что откуда и куда идет, какие там данные. То тебе в принципе тесты не сильно полезные, полезные, но как бы не обязательные. Чтобы привести аналогию. Допустим ты кодишь один, зачем тесты. С чем это можно сравнить. Например если ты соединяешь свой код с каким то левым API, у тебя нет возможности там что-то смотреть, править, у тебя должен быть механизм проверки правильности его работы. И получается при работе в команде у тебя (аналогично) нет времени смотреть в чужой код, и ты (твой код конечно) окружен внешним кодом, который от тебя что-то хочет или ты от него что-то хочешь. И этот код меняется независимо от другого кода, и вот при изменениях твоего кода, или кто-то меняет свой код, он должен прогнать тесты, которые взаимодействуют с твоим кодом, и они покажут все ли продолжает так же работать как и прежде. У меня примерно правильные предположения или я в чем то концептуально заблуждаюсь или про что-то забыл?

rudinandrey
Автор

Меня бесят скобки по PSR! Всегда ставил в JS стиле. Причина: часто пользуюсь фолдингом. Быстро понять структуру -> фолдинг до нужного уровня или фолдинг all с последующим постепенным разворачиванием.

xoxot_shamana
Автор

и я еще не до конца досмотрел, но правильно ли я понимаю, что вся ответственность (например в том же Laravel) на создание объектов и передачу их в контроллеры теперь должна лечь на роутер?

rudinandrey
Автор

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

ivanivanov
Автор

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

kandreyk