Зачем нужны события

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Еугений
Сообщения: 163
Зарегистрирован: 2014.11.12, 16:00

Зачем нужны события

Сообщение Еугений »

Не могу понять зачем и кода пригождаются события, объясните на примере реально существующей проблемы..
Аватара пользователя
diselop
Сообщения: 240
Зарегистрирован: 2013.01.29, 14:56

Re: Зачем нужны события

Сообщение diselop »

Например: есть база данных со ссылками на картинки. Так вот, на событие при удаление ссылки из базы, можно повесить функцию удаления файла с диска. И т.д.
Еугений
Сообщения: 163
Зарегистрирован: 2014.11.12, 16:00

Re: Зачем нужны события

Сообщение Еугений »

diselop писал(а):Например: есть база данных со ссылками на картинки. Так вот, на событие при удаление ссылки из базы, можно повесить функцию удаления файла с диска. И т.д.
Ну, это можно и без событий сделать, сразу в модели, разве нет?
Аватара пользователя
diselop
Сообщения: 240
Зарегистрирован: 2013.01.29, 14:56

Re: Зачем нужны события

Сообщение diselop »

В модели создать функцию на удаление файла, и при удалении ее вызывать?
Еугений
Сообщения: 163
Зарегистрирован: 2014.11.12, 16:00

Re: Зачем нужны события

Сообщение Еугений »

diselop писал(а):В модели создать функцию на удаление файла, и при удалении ее вызывать?
ну да
Аватара пользователя
diselop
Сообщения: 240
Зарегистрирован: 2013.01.29, 14:56

Re: Зачем нужны события

Сообщение diselop »

Можно, но допустим картинку может удалить: пользователь, админ и т.д. И каждый раз вызывать функцию? Можно упустить где-нибудь, а так повесил событие и можно не париться об этом.
Аватара пользователя
diselop
Сообщения: 240
Зарегистрирован: 2013.01.29, 14:56

Re: Зачем нужны события

Сообщение diselop »

Когда одно действие может вызваться с разных action'ов.
Еугений
Сообщения: 163
Зарегистрирован: 2014.11.12, 16:00

Re: Зачем нужны события

Сообщение Еугений »

diselop писал(а):Можно, но допустим картинку может удалить: пользователь, админ и т.д. И каждый раз вызывать функцию? Можно упустить где-нибудь, а так повесил событие и можно не париться об этом.
хм, полезно, спасибо
Аватара пользователя
diselop
Сообщения: 240
Зарегистрирован: 2013.01.29, 14:56

Re: Зачем нужны события

Сообщение diselop »

Еугений писал(а): хм, полезно, спасибо
Да не за что!
Антон
Сообщения: 199
Зарегистрирован: 2013.08.29, 05:27
Откуда: Харьков

Re: Зачем нужны события

Сообщение Антон »

А если в бд есть триггеры, то зачем события нужны?
Аватара пользователя
diselop
Сообщения: 240
Зарегистрирован: 2013.01.29, 14:56

Re: Зачем нужны события

Сообщение diselop »

Антон писал(а):А если в бд есть триггеры, то зачем события нужны?
Ну не все же события связаны с бд, например:

Код: Выделить всё

beforeValidate()
Антон
Сообщения: 199
Зарегистрирован: 2013.08.29, 05:27
Откуда: Харьков

Re: Зачем нужны события

Сообщение Антон »

Ну а когда лучше использовать например afterSave на фреймворке чем триггером в бд?
Аватара пользователя
diselop
Сообщения: 240
Зарегистрирован: 2013.01.29, 14:56

Re: Зачем нужны события

Сообщение diselop »

Антон писал(а):Ну а когда лучше использовать например afterSave на фреймворке чем триггером в бд?
Например при работе с файловой системой.
Аватара пользователя
diselop
Сообщения: 240
Зарегистрирован: 2013.01.29, 14:56

Re: Зачем нужны события

Сообщение diselop »

Или например у вас используется mysql в качестве основной базы, а логгирование, допустим, идет в mongodb. Тогда на эти событие вешать запись логов.
Антон
Сообщения: 199
Зарегистрирован: 2013.08.29, 05:27
Откуда: Харьков

Re: Зачем нужны события

Сообщение Антон »

ок.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Зачем нужны события

Сообщение zelenin »

Антон писал(а):Ну а когда лучше использовать например afterSave на фреймворке чем триггером в бд?
ну на событие необязательно вешать взаимодействие с БД. Например после каждого сохранения слать уведомление на мыло. Тригером тут не справишься.
Ответить