Архитектурные вопросы в приложении (лог, настройки)

HraKK

Мудак
Команда форума
code review никто не отменял
не отменял, но я говорю чем плох ДИ и неправильный подход к нему. А ты мне говоришь что опытный ревьювер заметит это. Ну как бы да. Одно другого не отменяет.

Как раз убирает. Этот класс может работать с любым другим классом, реализующим нужный интерфейс.
Мы говорим про звездность объектов, а не их совместимость.

PHP:
if($GLOBALS['printer'] instanceof iPrinter)
{
....
}
тоже решает с совместимостью.

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

HraKK

Мудак
Команда форума
Это не проблема DI. Это проблема PHP программистов и их желание наговнять.

Я же писал:
Не знаешь как получить компонент в той заднице где ты оказался? Твой выход - глобал и его семейство регистр, синглтон, контейнер etc. И... DI.
Просто DI это еще один способ замазать проблему и сказать что типа ты ее решил используя стильный модный молодежный подход - DI.

Никто не говорит что ДИ это плохо, я лишь говорю про один опасный аспект его использования распространенный в определенной среде программистов.
 

WMix

герр M:)ller
Партнер клуба
наоборот, di это у тебя куча никаким образом не связанных классов, и связка которая делает из кучи нечто похожее на программу. ничего не замазываем, а как раз в этом месте и создаем
 

HraKK

Мудак
Команда форума
и связка которая делает из кучи(говна) нечто похожее на программу
Спасибо большое! Ты наконец-то смог очень точно и емко передать мою мысль. После этой фразы думаю ничего больше не надо объяснять?
 

WMix

герр M:)ller
Партнер клуба
спасибо что оценил, без $_GLOBALS по сути твоя куча не чем не лучше.. ну да ладно.
по сути ты прав, связка и в том и в другом случае присутствует и она "глобальная" просто в одном случае, если связки нет, "куча не связанных классов" зависит от несуществующей связки
 

Вурдалак

Продвинутый новичок
Вам не надоело подменять DI и DIC/SL в предложениях?

Просто DI это еще один способ замазать проблему и сказать что типа ты ее решил используя стильный модный молодежный подход - DI
При чем тут DI, это всего лишь несоблюдение SOLID. Все началось с того, что ты мне сделал замечание:
Я бы убивал и расстреливал за такое.
А что, я где-то нарушаю SOLID, делая инъекцию логгера в нужный мне сервис?
 

HraKK

Мудак
Команда форума
А что, я где-то нарушаю SOLID, делая инъекцию логгера в нужный мне сервис?
Убивая детей я нарушаю SOLID? Не вся истинна в нем, брат. У тебя появляется связанность, пусть и замаскированная внутри DI.
 

Вурдалак

Продвинутый новичок
HraKK, ага, появляется зависимость от PSR-3 (стандарт де-факто, глобальный интерфейс). Ты не логгируешь в принципе? Используешь AOP?

Почему вообще на совет «используй DI» ты реагируешь «я бы убивал за такое»?

Про детей — явный уход с темы, SOLID как раз является практически критерием правильности кода (если что-то не так, то почти всегда могу подобрать один из принципов, который нарушается). Если появляются «плохие» зависимости, то скорее всего как раз где-то нарушается один из принципов, в данном случае — DIP, когда появляется зависимость от какой-то реализации (implementation detail) или SRP, когда объект начинает знать слишком много.
 
Последнее редактирование:

HraKK

Мудак
Команда форума
Почему вообще на совет «используй DI» ты реагируешь «я бы убивал за такое»?
не подменяй мои слова, я про то что не стоит отказываться от цепочки в сторону DI, если это не обосновано.
 

Вурдалак

Продвинутый новичок
не подменяй мои слова, я про то что не стоит отказываться от цепочки в сторону DI, если это не обосновано.
Что такое «цепочка» в твоем понимании? И как это противопоставляется DI? Если можно, то с примером, как я это сделал выше.
 
Последнее редактирование:

HraKK

Мудак
Команда форума
тем, что поддерживает dynamic dispatch
REGISTER поддерживает тоже, это как раз не принципиально.
Если можно, то с примером, как я это сделал выше.
В твоем примере все не так, ты занимаешься софистикой. Логично, что там нужно логер, а не сторонний сервис, мы говорим о методе туда попадания, я говорю что туда скорее всего надо явно пробрасывать логер, а ты за то что его неявно проставит через конструктор зависимость DI.
 

Вурдалак

Продвинутый новичок
ты за то что его неявно проставит через конструктор зависимость DI.
Щито? :) Зависимость через конструктор-то неявная? :D
Код:
<service id="foo_service" class="Acme\Foo">
    <argument type="service" id="logger" />
</service>
— явно пробросил через конструктор. Что тут неявного?
 

Вурдалак

Продвинутый новичок
HraKK, вообще с тобой неприятно вести беседу, ты выбирательно что-то цитируешь, избавляя себя от неудобных тебе вопросов.
Что такое «цепочка» в твоем понимании? И как это противопоставляется DI?
 

HraKK

Мудак
Команда форума
Что такое «цепочка» в твоем понимании? И как это противопоставляется DI?
controller->service->somemodel->some child object
Это цепочка.

Противопоставляется просто - либо пробрасывать через всю цепочку, либо вставлять напрямую через DI.

HraKK, вообще с тобой неприятно вести беседу
К счастью, я редко что-то пишу и у нас хоть и диктатура, но гуманная. Ты волен не вести беседу.

избавляя себя от неудобных тебе вопросов.
Неудобные вопросы? Лучше промолчу.
 
  • Like
Реакции: WMix
Сверху