@dev400

Как лучше подключить свой функционал в yii2?

Хочу сделать класс Notifications, у которого будет 2 публичных метода, уведомление по смс, и по email(обертка для Yii::$app->mailer), и дергать этот класс при регистрации, запросе пароля, смене личных данных пользователя и тд. Как лучше это подключить к проекту? Сделать неймспейс 'services', положить туда этот класс, и добавить его в web.php?
'components' => [
       ...
        'Notifications' => [
          'class' => 'app\services\Notifications',
        ],
       ...


Или есть какие то варианты сделать это правильнее? Пока что вопрос подключения своих классов к проекту для меня открыт, и вариант подключить через web.php взят из гугла (т.к. только изучаю yii2) . Использую шаблон basic.
  • Вопрос задан
  • 351 просмотр
Решения вопроса 2
qonand
@qonand
Software Engineer
Да Вы можете создать класс, прикрепить его к компонентам приложения и использовать везде в приложении. Но с точки зрения архитектуры это не камельфо, т.к. такая реализация создает лишние зависимости, со всеми вытекающими недостатками. Гораздо лучше реализовать на этот компонент на системе событий заложенной в Yii. Т.е. грубо говоря у Вас в системе происходит регистрация, в этот момент генерируется соответствующее событие, а Ваш класс Notifications подписывается на это событие и делает нужную работу
Ответ написан
mhthnz
@mhthnz
PHP, YII2, Golang, Linux
Если класс будет использоваться в некоторых местах, то можно подключать его в components из модуля, либо из нужного контроллера:
//Set component
public function init() 
{
        Yii::$app->setComponents(
        [
            'Notification' => [
                'class'=>'app\components\Notification',
            ],     
        ]); 
}

Это справедливо в первую очередь для тяжелых компонентов, но все равно приятнее жить когда знаешь что какой то функционал подключается только при необходимости.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы