Суть: после регистрации нужно по API передать данные пользователя в стороннее приложение.
Это обязательное событие - как бы пользователь ни был создан, он должен быть передан.
Собственно, вопрос, наверное, больше философский. Где лучше это событие (да и в принципе подобные) обработать?
Какие я вижу варианты:
1. запихнуть в afterSave() у AR-модели User, но как-то мне это не очень нравится, так можно простыню в этом методе накатать.
2. забутстрапить - повесить на EVENT_BEFORE_INSERT событие у ActiveRecord.
3. просто друг за дружкой сделать методы. Регистрируем пользователя, забираем айдишник, отправляем по API. Но тогда придется дублировать код (или вынести все в один сервис)
4. сделать поведение onAfterUserCreated и обрабатывать это в поведении
Собственно, я понимаю, что в теории все методы имеют место быть, и, возможно, местами даже вкусовщина, но как все-таки правильнее это делать?
Обязательное событие после регистрации пользователя - где лучше обрабатывать?
Обязательное событие после регистрации пользователя - где лучше обрабатывать?
Учусь, учусь и еще раз учусь
Re: Обязательное событие после регистрации пользователя - где лучше обрабатывать?
По вашей логике самый оптимальный вариант - это первый. После создания записи пользователя, передаём информацию о нём куда нужно. Дополнительно навесив условиеlorelei91 писал(а): ↑2021.01.30, 03:13 Какие я вижу варианты:
1. запихнуть в afterSave() у AR-модели User, но как-то мне это не очень нравится, так можно простыню в этом методе накатать.
2. забутстрапить - повесить на EVENT_BEFORE_INSERT событие у ActiveRecord.
3. просто друг за дружкой сделать методы. Регистрируем пользователя, забираем айдишник, отправляем по API. Но тогда придется дублировать код (или вынести все в один сервис)
4. сделать поведение onAfterUserCreated и обрабатывать это в поведении
Собственно, я понимаю, что в теории все методы имеют место быть, и, возможно, местами даже вкусовщина, но как все-таки правильнее это делать?
Код: Выделить всё
public function afterSave($insert, $changedAttributes)
{
parent::afterSave($insert, $changedAttributes);
// только при добавлении
if ($insert) {
//магия отправки данных
}
}
Re: Обязательное событие после регистрации пользователя - где лучше обрабатывать?
Раз речь об отправке в сторонний сервис, то я бы делал это вообще через queue. Зачем клиенту ждать пока выполнится запрос к апи.
В afterSave пуш в очередь и дальше уже обработка задачи в очереди в отдельном классе
В afterSave пуш в очередь и дальше уже обработка задачи в очереди в отдельном классе