@oop_ru

Страница 327 из 785
Андрэ
29.08.2017
13:19:27
Да куда уж)

Aleh
29.08.2017
13:23:10
теперь исходники на php станут еще фееричнее
не, не станут, тайпхинтам уже лет 9 в пыхе

Max
29.08.2017
13:47:57
а кто что думает на счет такого кейса - есть сущность Wallet и есть 3rd пати ApiClient апишка которая достает Balance этого кошелька. Есть две идейки реализации, сделать сервис $balanceProvider->getBalanceForWallet(Wallet $wallet): Balance c зависимостью ApiClient или же прокидывать клиент как аргумент в сущность $wallet->balance(ApiClient $client): Balance

второй вариант нравится больше так не нарушает инкапсуляцию аггрегата и не нужно плодить еще один сервис, но вот если нужно будет использовать в других сервисах, то нужно будет пробрасовать клиент извне

Google
Aleh
29.08.2017
13:50:49
а почему провайдера не прокидывать?

Max
29.08.2017
13:50:55
Мне наоборот второй вариант выглядит менее логичным. Метод balance() у кошелька, который принимает APIClient ???

Aleh
29.08.2017
13:51:21
а почему провайдера не прокидывать?
при этом хорошо подумать над именем и интерфейсик закинуть в домен

Max
29.08.2017
13:56:30
Max
29.08.2017
13:59:33
Мне наоборот второй вариант выглядит менее логичным. Метод balance() у кошелька, который принимает APIClient ???
APIClient это инфраструктура, прост не всегда состояние сущности хранится в одном месте и получается у меня в домене будет сервис которой к домену не имеет отношения

Max
29.08.2017
14:02:05
Я потому и написал, что выглядит это не красиво

Max
29.08.2017
14:45:39
да
хм, как-то сложно ... идея в том чтобы полностью убрать зависимость от инфраструктуры, те от ApiClient?

Serge
29.08.2017
15:44:01
выделить из ApiClient частичные интерфейсы по операциям. Например, IPasswordChangingService.

da horsie
29.08.2017
16:44:45
Не про ООП, но не могу не поделиться https://www.theregister.co.uk/2017/08/25/vw_engineer_gets_3yrs_for_emissionbusting_sw/

Sergei
29.08.2017
16:48:44
С ООП у них может и всё хорошо было.

Google
Max
29.08.2017
21:32:28
хм, а причем здесь фасад?

sic transit
29.08.2017
21:33:02
хм, а причем здесь фасад?
потому что у меня 4 утра ия только что налил кофе (в кружку)

Max
29.08.2017
21:33:35
вот кому сейчас легко?!))

sic transit
29.08.2017
21:34:07
вот кому сейчас легко?!))
Мне. Только что проснулся.

Не вникал, а что там от апи абстрагироваться нужно, не? Здесь кто-то сказал: "Убрать лишнюю зависимость от апи". В любом случае не полный бред :)

Max
29.08.2017
22:13:54
Не вникал, а что там от апи абстрагироваться нужно, не? Здесь кто-то сказал: "Убрать лишнюю зависимость от апи". В любом случае не полный бред :)
ну кароч... я поразмыслил и тут уже нужно больше копать в сторону bounded context. У меня есть сущность Wallet и есть апишка, например ApiClient, и часть поведения Wallet берется оттуда, например чтобы получить баланс кошелька, мне нужно дернуть апишку

сперва думал так... $balanceProvider->getBalanceForWallet(Wallet $wallet)

тип сервис который будет отдавать баланс

но

sic transit
29.08.2017
22:16:17
Давай пофантазируем: Bounded Context -> Strategy -> Facade

Max
29.08.2017
22:17:14
этот сервис чисто инфраструктура и как бы он описывает все то поведение, что есть у сущности wallet, но реализация на другой стороне

$wallet->balance(); $wallet->addBonus($bonus); и тд

sic transit
29.08.2017
22:18:07
Не могу с долларами читать, страдаю

Богатый язык

Max
29.08.2017
22:18:37
Не могу с долларами читать, страдаю
ах...точно, немного не тот чат))

Wallet wallet = ... Balance bal = wallet.balance(); wallet.addBonus(new SomeBonus());

ну ты понял)

sic transit
29.08.2017
22:21:10
я специально встал пораньше, чтобы успеть,а тут телега :)

Max
29.08.2017
22:22:14
если заюзать стратегию то в ушерб инкапсуляции

Google
Max
29.08.2017
22:22:47
но я особо не вижу как ее тут можно прикрутить...

А вообще получается, что мне нужно дергать сущность из другого контекста

только вот контекст это отдельный сервис

у меня есть еще идея...wallet делать как proxy

Игорь
30.08.2017
19:15:11
Ребят, привет. Перечитывал про IoС и DI и понял что я ничего не понимаю и совсем запутался. Может кто распутает мои мысли. В общем раньше я был такого мнения: Inversion of Control (инверсия управления) — это некий абстрактный принцип, набор рекомендаций для написания слабо связанного кода. Суть которого в том, что каждый компонент системы должен быть как можно более изолированным от других, не полагаясь в своей работе на детали конкретной реализации других компонентов. Dependency Injection (внедрение зависимостей) — это одна из реализаций этого принципа (помимо этого есть еще Factory Method, Service Locator). (Взято с хабра https://habrahabr.ru/post/131993/) Но затем я нашел такую статью http://sergeyteplyakov.blogspot.ru/2014/11/di-vs-dip-vs-ioc.html в которой говорится что: Инверсия управления (IoC) говорит об изменении потока исполнения, присуща фреймворкам и функциям обратного вызова и не имеет никакого отношения к управлению зависимостями. Передача зависимостей (DI) - это инструмент передачи классу его зависимости через конструктор, метод или свойство. И здесь я и запутался, на фразе что IoC не имеет никакого отношения к управлению зависимостями. Так всетаки как DI относится к IoC? или они не имеют отношения друг к другу? типа DI это инструмент предоставления зависимостей, а IoC это коллбеки, делегаты и т.д. в общем все что позволяет фреймворкам управлять нашим кодом?

Evgeniy
30.08.2017
19:44:44
Ребят, привет. Перечитывал про IoС и DI и понял что я ничего не понимаю и совсем запутался. Может кто распутает мои мысли. В общем раньше я был такого мнения: Inversion of Control (инверсия управления) — это некий абстрактный принцип, набор рекомендаций для написания слабо связанного кода. Суть которого в том, что каждый компонент системы должен быть как можно более изолированным от других, не полагаясь в своей работе на детали конкретной реализации других компонентов. Dependency Injection (внедрение зависимостей) — это одна из реализаций этого принципа (помимо этого есть еще Factory Method, Service Locator). (Взято с хабра https://habrahabr.ru/post/131993/) Но затем я нашел такую статью http://sergeyteplyakov.blogspot.ru/2014/11/di-vs-dip-vs-ioc.html в которой говорится что: Инверсия управления (IoC) говорит об изменении потока исполнения, присуща фреймворкам и функциям обратного вызова и не имеет никакого отношения к управлению зависимостями. Передача зависимостей (DI) - это инструмент передачи классу его зависимости через конструктор, метод или свойство. И здесь я и запутался, на фразе что IoC не имеет никакого отношения к управлению зависимостями. Так всетаки как DI относится к IoC? или они не имеют отношения друг к другу? типа DI это инструмент предоставления зависимостей, а IoC это коллбеки, делегаты и т.д. в общем все что позволяет фреймворкам управлять нашим кодом?
То что ты считал вначале как ioc называется dic

Dip

Dependency injection principe

Вторач трактовка ioc норм

Di правильно это инструмент

Игорь ты случаем меня не знаешь??

Игорь
30.08.2017
19:47:40
То что ты считал вначале как ioc называется dic
Спасибо, вот это меня и смущало, что в львиной доле статей в говорится что ioc это принципы и перечисляют принципы из dip. Что мне сейчас и бросилось в глаза поэтому и полез копать)))

da horsie
30.08.2017
19:47:52
Игорь ты случаем меня не знаешь??
Кто же не знает Евгения Кувшинова )

Игорь
30.08.2017
19:48:02
Игорь ты случаем меня не знаешь??
По фото сложно сказать) но скорее всего нет

Evgeniy
30.08.2017
19:48:24
Кто же не знает Евгения Кувшинова )
Одногрупник с таким именем и фамилией

По фото сложно сказать) но скорее всего нет
У меня одногрупник с таким именем и фамилией значит вы просто тески

da horsie
30.08.2017
19:49:01
Dependency injection principe
dependency INVERSION principle

Evgeniy
30.08.2017
19:49:34
Нихт фирштейн ?

Игорь
30.08.2017
19:49:43
da horsie
30.08.2017
19:50:18
Dependency INJECTION - это технология, Dependency INVERSION - это общий принцип

Google
Артур Евгеньевич
30.08.2017
19:50:30
Я кстати начинал статью писать про все эти аббревиатуры даже план набросал но потом как всегда:(

Evgeniy
30.08.2017
19:50:46
Игорь
30.08.2017
19:51:02
Evgeniy
30.08.2017
19:51:09
лан забей)

da horsie
30.08.2017
19:51:51
И в чем заключается этот принцип?
A. High-level modules should not depend on low-level modules. Both should depend on abstractions. B. Abstractions should not depend on details. Details should depend on abstractions. https://en.wikipedia.org/wiki/Dependency_inversion_principle

Evgeniy
30.08.2017
19:52:19
гуглится это легко

Evgeniy
30.08.2017
19:53:21
http://lmgtfy.com/?q=di+vs+dip

da horsie
30.08.2017
19:53:31
Dep INJECTION - это общее название механизма автоматического разрешения/внедрения зависимостей. e.g. Spring Framework in Java, Symfony DI and Pimple in PHP

Evgeniy
30.08.2017
19:54:21
ты что то скучный коняш к словам придераешься0

радуги, единороги, говнокод. тесты)

Артур Евгеньевич
30.08.2017
19:55:13
da horsie
30.08.2017
19:55:41
Блин сори, я подумал про ioc
IoC чуть более общая штука, чем DIP. Например Event Loop в Javascript это тоже пример IoC

Игорь
30.08.2017
19:56:02
В общем получается что ioc и di это разные вещи и вторая статья как раз является верной

Anton
30.08.2017
19:56:13
вторая входит в иос

как одна из возможных реализаций

da horsie
30.08.2017
19:56:45
В общем получается что ioc и di это разные вещи и вторая статья как раз является верной
DI плохая аббревиатура, она может означать как Inversion так и Injection

Anton
30.08.2017
19:56:46
наряду с фактори например

Артур Евгеньевич
30.08.2017
19:57:04
как одна из возможных реализаций
Не реализаций, а просто как подмножество ioc именно по управлению зависимостями

Google
da horsie
30.08.2017
19:57:22
Evgeniy
30.08.2017
19:57:36
ух предвкушаю срач

Anton
30.08.2017
19:57:51
с чего не реализаций. иос это принцип того что зависимости кто то предоставляет это можно сделать несколькими способами

Артур Евгеньевич
30.08.2017
19:57:58
наряду с фактори например
Так с помощью фактори модно реализовывать di

Anton
30.08.2017
19:58:30
я думаю это скорее будет реализация иос

а не ди

Артур Евгеньевич
30.08.2017
19:58:52
Все таки под словом реализация я бы понимал конкретный код

Anton
30.08.2017
19:59:18
я бы понимал один из возможных способов сделать что то. иос - интерфейс, ди - имплементейшн

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