
Sergey
14.02.2018
18:39:12
команда - причина, ивент - следствие
вот и вся разница

Артур Евгеньевич
14.02.2018
18:40:09
а листенеры ивентов могут порождать новые команды и "пушить" их в шину?

Google

Sergey
14.02.2018
18:40:14
да
так ты попадаешь в дивный мир саг

Bohdan
14.02.2018
18:40:35
а хендлерам лучше не запускать

Sergey
14.02.2018
18:41:04
ну то есть выполнение какого-то процесса в системе должно выражаться как поток команд и событий
( зарегистрируй юзера) -> юзер зареган -> (создай ему баланс) -> баланс сознад....

Bohdan
14.02.2018
18:42:27

Sergey
14.02.2018
18:42:43
и название у этого места известно какое

Bohdan
14.02.2018
18:43:30
сага, ага
ну или не сага
просто хоть ты и говорил, что такое можно сложить красиво бред саг - я все равно не придумал, как

Sergey
14.02.2018
18:43:49

finkel
14.02.2018
18:43:59
да а что н так?
а если «затонируйся» это снять тонировку, помыть стекло и поставить тонировку. И это единый алгоритм для всех объектов которые можно тонировать?)

Sergey
14.02.2018
18:44:04
и еще - ты понимаешь что "показать список" или "сформировать репорт" на эту тему чуть по другому ложится

finkel
14.02.2018
18:46:34

Google

Shmaltorhbooks
14.02.2018
18:47:54

Артур Евгеньевич
14.02.2018
18:53:24

Sergey
14.02.2018
18:54:12
как объект "дверь" может себя открыть, а "человек" может себя убить

Артур Евгеньевич
14.02.2018
18:54:27

Bohdan
14.02.2018
18:54:28

Артур Евгеньевич
14.02.2018
18:55:50
ок
ладно спасибо вам, стало попонятнее

finkel
14.02.2018
18:59:02

Артур Евгеньевич
14.02.2018
19:03:32
Так а в чем плюсы использования команд баса, если хендлер один? в чем проблема добавить одну строчку в контроллере?
вот с событиями мне виден профит, типо одно событие произошло и все его обрабатывают

Bohdan
14.02.2018
19:09:29

Артур Евгеньевич
14.02.2018
19:12:45
Не совсем понял. Чем по факту отличается
SomeService->createUser(UserDTO) от commnadBus->handle(UserCommand)
а ну да, пока писал понял - нам ен нужно инджектить лишние сервисы в контроллер))
и реализацию обработки команд можно переключать с помощью конфигов
есть еще что то что я упустил?

Bohdan
14.02.2018
19:20:55

Артур Евгеньевич
14.02.2018
19:25:44
что то я не подумал изначально об это

Bohdan
14.02.2018
19:25:56
не

Google

Bohdan
14.02.2018
19:26:09
можем сделать обертку над тем методом комманд баса, который будет выполнять все
посмотри tactician
там хорошо показаны такие примеры

Sergey
14.02.2018
19:30:54
зеркало как композиция
типа абстрактная фабрика?
ну и да - выносить это как отдельную фабрику не вижу смысла
особенно если это было "легко"

Ihor
14.02.2018
19:32:12
а с другой стороны, зачем этот метод наследникам?

Sergey
14.02.2018
19:32:44

Ihor
14.02.2018
19:35:18

Sergey
14.02.2018
19:35:46

Sergey
14.02.2018
19:35:52
по идее

Ihor
14.02.2018
19:38:57
public static function create ($classsName) {
if ($className == 'ReportA') {
return new ReportA();
}
..................................
}
абстрактная должна предоставлят интерфейс, для создания объектов...
Книжку по рефакторингу посоветуете?)

da horsie
14.02.2018
19:56:14
гуглить "фаулер рефакторинг"

Ihor
14.02.2018
20:03:45
спасибо

Maksim
14.02.2018
20:09:25

Google

Артур Евгеньевич
14.02.2018
20:14:10
Responsibilities of the command bus — Matthias Noback - Blog
https://matthiasnoback.nl/2015/01/responsibilities-of-the-command-bus/

Bohdan
14.02.2018
20:14:51
я его статью и пытался рассказать)

Артур Евгеньевич
14.02.2018
20:15:37

Sergey
14.02.2018
20:27:17

Алексей
14.02.2018
20:40:34
стекло не должно пропускать все что связано со светом через объект тонировки Ton, который по умолчанию установлен в NoTon? И все что связано со свойствами стекла, при обращении должно вычисляться с учетом характеристик Ton? Ну и зависит от уровня модели
Ton соответственно может быть засечен кем угодно

Артур Евгеньевич
14.02.2018
20:47:23

Admin
ERROR: S client not available

Артур Евгеньевич
14.02.2018
20:47:27
как это конфигурить?

Sergey
14.02.2018
20:47:43
один хэндел = одна команда
нафига тебе два их?

Артур Евгеньевич
14.02.2018
20:48:35
class CommandBusWithAddedBehavior implements CommandBus
{
public function __construct(CommandBus $originalCommandBus)
{
$this->originalCommandBus = $originalCommandBus;
}
public function handle($command)
{
// do anything you want
$this->originalCommandBus->handle($command);
// do even more
}
}
не понимаю как рарзлится то что команда сначала должна обрабоатся по этой шине CommandBusWithAddedBehavior каким то обработчиком, а потом по обычной

Sergey
14.02.2018
20:52:35
$foo = function($x) {
return $x * 2;
}
$bar = function ($foo) {
return $foo() + 2;
}
echo $bar($foo(10));
что получится?

Артур Евгеньевич
14.02.2018
20:54:20

Sergey
14.02.2018
20:54:23
CommandBusWithAddedBehavior - это просто какой-то декоратор. Например который после выполнения команды тебе UoW зафлашит, или в логи попишет какую команду он собирается выполнять

Google

Sergey
14.02.2018
20:54:51
что тут не понятного?
шины-декораторы про это ничего не знают

Артур Евгеньевич
14.02.2018
20:56:27
да разобрался
просто думал что метод $commandBusWithAddedBehavior->handle($command) тоже должен как то смапить нужный обработчик, сейчас понял что там просто прокидывание по сути
В каком слое вы храните dto? Presentation или Infrastructure?

Sergey
15.02.2018
14:06:19
и какой слой выше а какой ниже?
и presentation и infrastructure слои одного уровня примерно

Артур Евгеньевич
15.02.2018
14:07:35

Adel
15.02.2018
14:09:08
в конечном свете - DTO принадлежит более низкому слою :) очевидно ж

Evgenij
15.02.2018
14:11:44
Можеть ли сущность отдавать данные в виде DTO обьекта ?

Sergey
15.02.2018
14:13:58

Evgenij
15.02.2018
14:17:51
может, ты вообще все можешь
Да, но наскольлко это правильно , видел реализацию через класс ассемблер и не совсем понял зачем доп абстракция

Sergey
15.02.2018
14:18:09
иногда удобно
когда тебе надо получить 1 DTO из двух сущностей

da horsie
15.02.2018
17:10:16

Ihor
15.02.2018
18:29:53
Я вот читал утром про OrderService.CancaleOrder и Order.Cancel

Sergey
15.02.2018
18:31:01

Ihor
15.02.2018
18:31:15
скажем, во время отмены ордера надо - отослать емейл, изменить количество доступных продуктов который были в оредере