
Evgeniy
03.03.2017
11:13:46
сейчас набросаю
http://pastebin.com/G6Unu8T4
такой пример?)

Aleh
03.03.2017
11:18:06
это все подходы IoC

Google

Aleh
03.03.2017
11:18:24
в первом случае инъекция зависимостей, во втором сервис-локатор
почему ты первое назвал сервис-локатором не ясно

Evgeniy
03.03.2017
11:18:47
http://pastebin.com/0nXZGU2W
перепутал простите
:D
писал одно думал о другом)

Aleh
03.03.2017
11:19:06
первое - DI, второе локатор
все они IoC

Evgeniy
03.03.2017
11:19:20
тогда что такое IOC ?
inverse of control это изменение чего то )
когда зависимости по разному создаются )))
если расмотреть di как конкретная реализация
и сделать service locator и ioc это принципы

Google

Evgeniy
03.03.2017
11:20:21
тогда было бы понятней но э
это не совсем правда)
как правильно?
может кто то объяснить на примере
показать пример ioc и сказать это ioc потому что вот это вот так
похоже меня только одного интересует этот вопрос(

Aleksandr
03.03.2017
11:27:26
Своими словами объясни что такое инверсия контроля. Это оно и есть.
Не в контексте программирования

Evgeniy
03.03.2017
11:32:41
ну я выше писал
это когда управление меняется)
и разное управление возвращает разный результат)
просто я хочу знать когда в проекте
IOC, DI, ServiceLocator )

Aleksandr
03.03.2017
11:37:31
Это когда компонент инвертирует контроль за своими зависимостями. Сначала компонент сам их контролирует, а инвертировав, перекладывает это на пользователя.
Это подход. И этот подход может быть реализован с помощью di

Evgeniy
03.03.2017
11:40:18
ну получается что я написал в коде
просто все зависит от реализации di

Aleksandr
03.03.2017
11:48:50
ioc - это инверсия контроля за зависимостями
di - это когда ты зависимости внедряешь (инджектишь) для инверсии контроля
service locator - это паттерн, позволяющий держать инстансы сервисов в одном реестре
все вместе это разные вещи, но могут решать проблемы друг друга

Evgeniy
03.03.2017
11:54:23
service locator - это паттерн, позволяющий держать инстансы сервисов в одном реестре
а что за паттерн тогда registry ?

Google

Evgeniy
03.03.2017
11:55:03
потому что отличие service locator от di очень хорошо описано здесь https://martinfowler.com/articles/injection.html

Aleksandr
03.03.2017
11:55:12
загугли) реестр - это по-моему обычное понятие из риал лайф - его не надо объяснять

Evgeniy
03.03.2017
11:55:36
так есть паттерн
Registry как и service locator
только отличие в том что в начале все объекты создаются а потом возвращается один и тот же результат
а в случае с service locator объект создается в момент когда ты его запрашиваешь
нету предварительно этапа создания
Registry это любое key, value хранилище

Aleksandr
03.03.2017
11:57:32

Evgeniy
03.03.2017
11:57:48
так там говорится вот возьмем di
если мы внедряем готовый результат (объекты) это будет di
если мы передаем сам объект который получает результаты и там уже внедряем

Aleksandr
03.03.2017
11:58:27

Evgeniy
03.03.2017
11:58:32
то это service locator

Aleksandr
03.03.2017
11:59:52
частная его реализация - SL
точнее не реализация, а частный вариант использования

Sergey
03.03.2017
12:01:47

Aleh
03.03.2017
12:01:59
@fes0r так расскажешь про модули?(

Google

Aleh
03.03.2017
12:11:51
?

Evgeniy
03.03.2017
12:13:26
и использовался как SL
или получается так
http://pastebin.com/kxgCLEGh
вот более подробно написал

Aleksandr
03.03.2017
12:24:24
ты все не поймешь: di и ioc - принципы. у них не может быть интерфейсов.

Evgeniy
03.03.2017
12:24:58
хорошо di и ioc принципы
sl тоже принцип ?

Aleksandr
03.03.2017
12:25:14
вот тебе принцип - будь хорошим. Это не значит, что должен быть GoodInterface

Admin
ERROR: S client not available

Aleksandr
03.03.2017
12:25:32

Evgeniy
03.03.2017
12:25:49
хорошо это паттерн
di принцип говорит пиши классы как в MagicDI ?

Aleksandr
03.03.2017
12:27:08
dependency injection - инжектируй зависимости.

Evgeniy
03.03.2017
12:27:57
ну пусть $ioc будет тот кто инжектирует

Aleksandr
03.03.2017
12:27:58
если рассматривать MagicDI, то да, оно

Evgeniy
03.03.2017
12:28:09
хорошо а SL паттерн
но фаулер говорит если у вас SL пишите в этом стиле
в стиле MagicSL

Google

Evgeniy
03.03.2017
12:28:40
и там графики зависимостей

Aleksandr
03.03.2017
12:29:19
он говорит что можно вместо отдельных зависимостей инжектировать целый контейнер.

Evgeniy
03.03.2017
12:29:26
и приводит минус SL что ваш MagicSL зависит помимо a и b он еще зависит от интерфейса ServiceLocatorInterface ну или как в примере IoCInterface
это говорит паттерн или принцип?

Aleksandr
03.03.2017
12:29:43
сам по себе SL не про инжектирование контейнера, а про реестр сервисов

Evgeniy
03.03.2017
12:30:12
ок я понял о чем ты
так реестр сервисов может быть в стиле DI из примера MagicDI

Aleksandr
03.03.2017
12:31:04
ок я понял о чем ты
то есть если ты понял, что фаулер рассказывает о смысле SL как об инжектировании контейнера, то нет. это скорее об антипаттерне - зависимость от контейнера

Evgeniy
03.03.2017
12:31:26
да это я давно понял)
что это плохо
получается у тебя есть MagicDI
и есть какой объект который может его создать (ServiceLocator)

Aleksandr
03.03.2017
12:32:16
ну и вот. То что ты называешь MagisSL - это пример антипаттерна, а не как работает SL

Evgeniy
03.03.2017
12:32:29
ок я понял это я написал
так ?
получается у тебя есть MagicDI
и есть какой объект который может его создать (ServiceLocator)

Aleksandr
03.03.2017
12:33:55
что такое MagiDi? сервис из SL?

Evgeniy
03.03.2017
12:34:13
ну из примера объект
пример как описывать классы без антипатерна

Aleksandr
03.03.2017
12:34:56
service locator создает только сервисы, которые в нем находятся (и то скорее в нем фабрики, которые создают сервисы)

Evgeniy
03.03.2017
12:34:59
там иньекция только в конструктор но другие пока не будем трогать чтобы не усложнять

Aleksandr
03.03.2017
12:35:13
ну ок, констурктор