ООО «ПРкениг»
236006 Калининград Московский проспект 40
8 (4012) 39 09 55
info@pr-kenig.ru,

Понимание событий (event) и поведений (behavior) в yii2

Понимание событий (event) и поведений (behavior) в yii2
Понимание событий (event) и поведений (behavior) в yii2
Автор Дмитрий Грозный Дмитрий Грозный 21/08/2018

Всем привет! Как всегда делюсь своими знаниями с вами!

Что такое событие (event) и поведение (behavior) в yii2? Где применять? Как это вообще можно понять? Зачем это нужно, если можно просто писать код?

Такие вопросы я задавал сам себе в начале своего обучения yii2. 

Если вы зашли на эту страницу, чтобы подтянуть знания, то лучше прочитать статьи «события yii2», «поведения yii2», т.к. у нас пойдет речь об общих принципах, а не о конкретных примерах.

Начнем с того, что вы должны понимать. Все объекты в yii2 наследуются от базового компонента, который и содержит в себе предпосылки для работы с событиями и поведениями. Привычные нам модели, контроллеры, подключенные компоненты с помощью файла конфигурации и т.д. - это все дочерние классы объекта yii\base\Component. Даже сам Yii::$app не без исключения!

Встроенные события и поведения

Допустим у нас пока нет собственных событий и поведений! Что остается?

На самом деле yii2 богат данными возможностями. Он не знает какой у вас будет проект и как он будет работать, но он уже вам помогает облегчить работу!

Yii2 готов подстраиваться под вас! Начиная от:

  • запуска приложения (Yii::$app)
  • инициализации bootstrap компонентов (автозагрузка)
  • получения запроса от клиента (Yii::$app->request)
  • инициализации различных компонентов (Например: Yii::$app->controller)
  • начало и конец построения представления (Yii::$app->view)
  • отправки ответа клиенту (Yii::$app->response)
  • и окончанием выполнения приложения (Yii::$app)

На каждом этапе работы приложения вы можете повлиять на исход его выполнения! Например, если сайт находится в разработке, то показать Coming Soon (Страница заглушка) - событие Yii::$app «beforeAction». Если вы хотите ограничить кого-нибудь в доступе некоторых страниц сайта, то можно изменить поведение Yii::$app «AccessBehavior». 

В примерах выше, я привел реализацию событий и поведений. Но возникают вопросы. Когда используется поведение (behavior) и когда событие (event)? И чем они отличаются?

Принцип применения событий (event) и поведений (behavior) в yii2

Что такое поведение (behavior) и событие (event)? Официальные определения приводить не буду, они даны на сайте yii2.

Исходя из общего определениясобытие (event) - это сообщение, которое возникает в различных точках исполняемого кода при выполнении определённых условий. 

События выполняются всегда! Однако не на все события подписаны обработчики! Например, ваш проект на yii2 каждый раз активирует событие «beforeAction», но вы не обрабатываете его для своих нужд, т.к. вам этого не нужно. 

Другой случай. Вы создали собственное событие «event_created_order» у модели Order (заказ). Событие наступает под определенным условием, после того как будет создан заказ. В дальнейшем вам нужно будет его обработать, но на данный момент, достаточно просто сохранить. 

Когда возникает потребность доработать. Вы просто подписываетесь на это событие в самом объекте, не вникая в подробности как приложение сохраняет заказы, и пишите свой обработчик. Например «отправка на электронный адрес оператора уведомление о новом заказе на сайте».

Явного определения поведений (behavior) в программировании я не нашел. Поэтому буду писать о поведении (behavior) в yii2.

По сути, события и поведения в yii2 по своей природе схожи. Обе сущности помогают внедрять кусок кода, отличающегося по логике от основного. Однако поведение шире по своему предназначению.

Поведение (behavior) - это своеобразная надстройка в исполняемом объекте (компоненте) на ответ события. В отличии от событий, поведения (behavior) выполняют строго определенную задачу, без которого может быть нарушена логическая цепочка работы компонента и сайта в целом.

Прежде всего, цель применения поведений - это сократить использования одних и тех же функций в различных классах, что позволяет избежать дублирование кода. Более подробно можете прочитать здесь: https://www.klisl.com/behavior...

Таким образом, при написании кода для определенных задач, обращаемся к событиям и поведениям в следующих ситуациях:

  •  Когда необходимо формировать данные для дальнейшего использования или выполнять условия за рамками выполнения различных методов компонента. - behavior
  •  Когда необходимо выполнять условия за рамками выполнения метода компонента. - event

В файле конфигурации, в компонентах к событиям можно дописать обработчик, а поведение можно просто добавить.

[
    'class' => 'ClassName',
    'propertyName' => 'propertyValue',
    'on eventName' => $eventHandler,
    'as behaviorName' => $behaviorConfig,
]



Yii2 behavior event

Просмотров: 852

Заказать проект

Наша команда профессионалов готова реализовать ваши проекты, заполните форму: