Обязательное событие после регистрации пользователя - где лучше обрабатывать?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
lorelei91
Сообщения: 1
Зарегистрирован: 2021.01.30, 02:59

Обязательное событие после регистрации пользователя - где лучше обрабатывать?

Сообщение lorelei91 »

Суть: после регистрации нужно по API передать данные пользователя в стороннее приложение.
Это обязательное событие - как бы пользователь ни был создан, он должен быть передан.

Собственно, вопрос, наверное, больше философский. Где лучше это событие (да и в принципе подобные) обработать?

Какие я вижу варианты:
1. запихнуть в afterSave() у AR-модели User, но как-то мне это не очень нравится, так можно простыню в этом методе накатать.
2. забутстрапить - повесить на EVENT_BEFORE_INSERT событие у ActiveRecord.
3. просто друг за дружкой сделать методы. Регистрируем пользователя, забираем айдишник, отправляем по API. Но тогда придется дублировать код (или вынести все в один сервис)
4. сделать поведение onAfterUserCreated и обрабатывать это в поведении

Собственно, я понимаю, что в теории все методы имеют место быть, и, возможно, местами даже вкусовщина, но как все-таки правильнее это делать? :)
Учусь, учусь и еще раз учусь
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Обязательное событие после регистрации пользователя - где лучше обрабатывать?

Сообщение unknownby »

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)  {
		//магия отправки данных
        }
    }
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Обязательное событие после регистрации пользователя - где лучше обрабатывать?

Сообщение rak »

Раз речь об отправке в сторонний сервис, то я бы делал это вообще через queue. Зачем клиенту ждать пока выполнится запрос к апи.
В afterSave пуш в очередь и дальше уже обработка задачи в очереди в отдельном классе
Ответить