Вурдалак
Продвинутый новичок
А когда транзакция будет завершена?мыло я отправлю через bus. те оно отправится если транзакция была завершена и демон не упал.
Проверяются ли там права? Проверяются ли те же права при вызове из CLI?
А когда транзакция будет завершена?мыло я отправлю через bus. те оно отправится если транзакция была завершена и демон не упал.
Чо?перед
тут по задаче, надо, проверю.Проверяются ли там права? Проверяются ли те же права при вызове из CLI?
Я ничего не понял. У меня есть вполне конкретное событие UserWasRenamed, которое генерируется после выполнения команды RenameUser. Как мне отправить письмо по событию UserWasRenamed? Кем гарантируется, что это не попадёт в транзакцию? Ведь если я правильно понимаю, вот это:ну или другими словами это другой процесс который выполнит физическую отправку
А ты мне рассказываешь про асинхронные события. Обрабатываться они будут где-то в очередном middleware, правильно?Что ты будешь делать, если у тебя есть событие, по которому синхронно выполняется другой обработчик
Ты что-нибудь скажешь?Ведь если я правильно понимаю, вот это:
> $router['RenameUser']->handle(['id'=>42, 'name' => 'Alice']);
либо запускает все middleware, где проверяются права, специфичные для какой-то конкретной точки (web, админка, CLI, ...) и стартует транзакция,
либо ни один middleware, а это значит не стартует транзакция.
Я не совсем понял, о какой «задаче» ты говоришь? Ты заменил строчкув описанном оно просто достанет пользователя по id и вернет обьект, избавив тебя от задачи это делать
$user = $this->userRepository->find($command->userId);
public function myAction(User $user)
id стало пользователем, проверилось возможность (существование) выбора и прав выбора пользователя, грубо 400, 403 или 404о какой «задаче»
То есть ты смешиваешь проверки из домена проверки прав для web и «чистую» бизнес-логику.id стало пользователем, проверилось возможность (существование) выбора и прав выбора пользователя, грубо 400, 403 или 404
Ты не сообщаешь новой информации, игнорируешь вопросы.точка это action, есть довольно повторяющие вещи которые происходят до этого действия ( в нашем случае, создание обьекта). до действия я проверяю прав ли клиент 4хх, а середине или конце либо 200 либо i fucked up
не знаю что хочешь услышать, как определить 403 или 404?проверки прав для web
у каждого action свои настройки middlewareКак же ты подменяешь
Не тупи, ещё раз: как ты подменяешь правила для CLI, где эти «правила» нужно полностью вырубить, как ты подменяешь для админки, где нередко используются совершенно другие пользователи (в плане модели; другие таблицы и базы), для старого API, где из-за BC иногда приходится идти на какие-то компромиссы и т.д.? И как вообще в том же CLI или любом другом протоколе, отличном от HTTP, ты конвертируешь 403, ... и прочее в другой формат? Что если данных для нового формата недостаточно (из HTTP-кода не получится «вытащить» более конкретную ошибку)?не знаю что хочешь услышать, как определить 403 или 404?
я уверен, что мое решение не будет отличаться от твоего, как если бы у тебя писался бы лог в середине транзакции, в ту же базу. вероятнее всего придется отложить запись. мне конечно мало представляется такой сценарий, ну да пусть будет.По поводу подмешивания других транзакций через другие middlewares ты тоже не ответил: что если добавить middleware, который замечательно работает, пишет какие-то логи в БД, но при смене connection на тот, что совпадает с тем, по которому происходит изменение User'а, обнаруживается, что логи иногда тупо не пишутся, потому что происходит rollback, связанный с User?
там нет вобщето http.И как вообще в том же CLI или любом другом протоколе, отличном от HTTP, ты конвертируешь 403,
вероятнее всего у нас разные понятие application. в нашем случае application это сборка приложения, di, em, routing, input/output/error-handler. service же это часть модели который работает с mappers и запускает конечные методы в сущностях.Ты по факту просто удаляешь service layer (aka application layer).
Если я правильно понимаю, ты сочиняешь на ходу, и в реальности пока это не используешь. Сейчас ты уже утверждаешь, что копипастишь детали command handler под каждый формат. Немного ранее же ты на мой аналогичный вопрос отвечал так:command которая под worker работает это не action там нет request и не нужен view там нет http-excteption, она пишется немного иначе но при этом там переиспользуются сервисы.
«Кручу-верчу, обмануть хочу».как угодно, так нравится?
PHP:$router['RenameUser']->handle(['id'=>42, 'name' => 'Alice']);
есть рутинг, он естественно для консольных приложений и хттп действий разный, но и в том и в другом случае вызов одинаковыйНемного ранее же ты на мой аналогичный вопрос отвечал так:
чаще всего (практически всегда) консольные команды имеют совершенно другие задачи нежеле web там не надо копипастить.копипастишь детали command handler под каждый формат