@oop_ru

Страница 133 из 785
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
Registry это любое key, value хранилище
именно. service locator оно и есть - ты же по ключу запрашиваешь

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

именно. service locator оно и есть - ты же по ключу запрашиваешь
так разница в том что объекты в регистре уже объявлены

Aleksandr
03.03.2017
11:59:52
так разница в том что объекты в регистре уже объявлены
не мешай все в кучу. реестр - это просто реестр. kv сторадж.

частная его реализация - SL

точнее не реализация, а частный вариант использования

Sergey
03.03.2017
12:01:47
а в случае с service locator объект создается в момент когда ты его запрашиваешь
не всегда. ты можешь ioc контейнер взять и заюзать как сервис локатор

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
sl тоже принцип ?
это паттерн

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
ну ок, констурктор

Страница 133 из 785