Size: a a a

2020 November 05

СП

Сергей Предводителев... in Yii Framework 3
Виктор
final class CommentService
{
   private CommentRepositoryInterface $commentRepository;
   private DeferredEventService $eventService;

   public function create(string $threadId, string $userId, string $body, ?string $byUserId = null): Comment
   {
       $this->eventService->pushEvent(new EventBefore());
       $comment = new Comment(
           UuidHelper::generateTimestampFirstCombUuid4(),
           $thread->getId(),
           $userId,
           $body,
           $byUserId,
       );
       $this->eventService->pushEvent(new EventInside());

       $this->commentRepository->save($comment);
       $this->eventService->pushEvent(new EventAfter());

       $this->eventService->releaseEvents();

       return $comment;
   }
}
А если события генерятся внутри сущности,  то вместо

$entity->methodA($x, $y);
$entity->methodB();


C сервисом они станут:

$entity->methodA($x, $y, $deferredEventService);
$entity->methodB($deferredEventService);
источник

В

Виктор in Yii Framework 3
Сергей Предводителев
А если события генерятся внутри сущности,  то вместо

$entity->methodA($x, $y);
$entity->methodB();


C сервисом они станут:

$entity->methodA($x, $y, $deferredEventService);
$entity->methodB($deferredEventService);
Если у тебя сущность работает с событиями, то да. Больше ответственностей - больше зависимостей, это логично.
источник

СП

Сергей Предводителев... in Yii Framework 3
Виктор
Если у тебя сущность работает с событиями, то да. Больше ответственностей - больше зависимостей, это логично.
Но передавать её в каждый метод - не удобно же :)
источник

В

Виктор in Yii Framework 3
Правда, тогда скорее сущности надо генерить через фабрику, а не new
источник

В

Виктор in Yii Framework 3
и сервис этот совать в конструктор
источник

СП

Сергей Предводителев... in Yii Framework 3
Виктор
и сервис этот совать в конструктор
А если ORM
источник

В

Виктор in Yii Framework 3
?
источник

СП

Сергей Предводителев... in Yii Framework 3
Ну ORM восстанавливает сущностьиз БД. Она же конструктор не вызывает
источник

В

Виктор in Yii Framework 3
или мы друг друга не поняли, или я очень плохо знаю php... Как можно создать объект, не вызывая конструктор?
источник

T

TradersVE in Yii Framework 3
Виктор
или мы друг друга не поняли, или я очень плохо знаю php... Как можно создать объект, не вызывая конструктор?
using reflection
источник

AB

Alexander Borisov in Yii Framework 3
Виктор
или мы друг друга не поняли, или я очень плохо знаю php... Как можно создать объект, не вызывая конструктор?
источник

В

Виктор in Yii Framework 3
:/ не пользовался таким хаком. Да и не понимаю, зачем он...
источник

СП

Сергей Предводителев... in Yii Framework 3
гидраторы
источник

AM

Alexander Makarov in Yii Framework 3
anton
Нет, в коде видно что 2. И, я сегодня на примере json пакета заметил, что не по дефолту
Ну плохо, чё :( Надо вернуть...
источник

T

TradersVE in Yii Framework 3
for me not to use the constructor in a bad trick.
источник

В

Виктор in Yii Framework 3
В общем, ты только сильнее убедил меня в том, что сущность круче DTO -  это зло.
источник

СП

Сергей Предводителев... in Yii Framework 3
TradersVE
for me not to use the constructor in a bad trick.
ORM so work... doctrine and cycle orm
источник

AM

Alexander Makarov in Yii Framework 3
Виктор
В общем, ты только сильнее убедил меня в том, что сущность круче DTO -  это зло.
:)
источник

В

Виктор in Yii Framework 3
TradersVE
for me not to use the constructor in a bad trick.
For me too
источник

В

Виктор in Yii Framework 3
Ладно, надо с этим что-то решать)) Я вижу такие варианты:
- Трейты - ок
- Эвенты внутри сущностей не ок, поэтому сделаем сервис
источник