[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Класс DI от Arh
Страницы: 1, 2
twin
Вот тебе мозг засрал этот контейнер :)
Цитата (Arh @ 13.10.2015 - 16:50)
Не пойму ты на меня грешишь или на мой класс или вообще на паттерны DI|DIC|SL?
Я не на кго не грешу. Я пытаюсь объяснить просто.

Ты выдернул инструмент из парадигмы. Это не грех вовсе. Так и нужно. Просто это надо принять как факт.

Цитата
Ну так у меня и получится. Есть класс Tpl.
Захочу юзать smarty, напишу адаптер и подсуну его вместо Tpl.
Не понял, ты на все классы адаптеры пишешь? Да и адаптер, это другая тема совсем. Я сослался на твой же пример со смарти. Возьми любой другой класс, суть не изменится. Ты нахардкодил.

Цитата
Тогда поменяется везде на твиг, а если я хочу только в одном модуле? Уже не такая связность.
Ты просто наверное не знаешь. что такое use.

Цитата (Arh @ 13.10.2015 - 16:50)
Не так.
Рефлексия мне нужна уже сейчас.
Ну значит совсем молодец. :)

Цитата
Как правильно использовать эти паттерны?
Ты именно эти паттерны используешь правильно. Ты в терменологии путаешься.
Цитата
Вот DIC

Нет. Это DI Сервис-локатора. Ты получаешь конкретный объект по конкретному адресу. Это чистой воды SL. Только ты сам локатор внедряешь, как зависимость.
Паттерн DIC, это когда ты внедряешь службу, которая сама определяет свои зависимости.

Контейнер, это не твой класс. Контейнер, это объект, который ты зарегистрировал в реестре своего класса. Он, и только он знает, что потом инстанцировать. Потому и рефлексия нужна.
Вот ты сам написал :)
    $C = new C;
$B = new B($C);
$A = new A($B);
echo $DI->get('A')->test(); //В контейнере уже есть готовый экземпляр А

Контейнер, это класс А. А $DI, это не контейнер. Это реестр-обработчик. Вот если он умеет работать с контейнером, то пример с тремя вложенными классами и есть паттерн DIC. Если ты просто обращаешься к одному зарегистрированному объекту, это SL.

Повторю - паттерн, это не класс, не структура. Это принцип, шаблон использования, вещь абстрактная и не матеиальная.

Пример из жизни. Есть допустим нож. Это что, куханный прибор или орудие убийства? Вот как ты его используешь, по какому паттерну, тем он и будет. Будешь хлеб резать - куханный прибор. Зарежешь соседа - орудие убийства.

Нож, это твой класс. DIC и SL - способы его использования.

А неправильно ты используешь его в свете IoC. Но тебя это колыхать не должно, у тебя не ООП приложение, там хардкод никому не вредит. :)

Цитата (Arh @ 13.10.2015 - 16:50)
Как?
А вот буду делать и посмотрим. Сам пока толком не знаю. Но знаю, что SL и его производный DIC очень многими считаются антипаттернами. Значит обходятся люди без них. :)


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.