Форум → Программирование → PHP для идиотов → Events
Events
Страницы: ← Предыдущая страница • Следующая страница →
-
-
19 апреля 2010 г. 9:06, спустя 5 дней 12 часов 2 минуты
есть как минимум две разные цели для "событий"
- извещение всех заинтересованных о том, что произошло нечто
- изменение поведения объекта без лишнего наследования
насколько я понял описание Symfony 2, там только первый случай. автор подчеркивает, что старался реализовать минимум, но легко и быстро
в Yii events используется для behavior-объектов, хотя не только
вобщем, как всегда, надо сначала подумать "а зачем оно мне?".ιιlllιlllι унц-унц -
20 апреля 2010 г. 0:03, спустя 14 часов 56 минут 54 секунды
Уже не первый раз читаю эту тему, т.к новые комменты есть, но 2 ответ Маврэо! вменяймый чел держите его чтоб с форума не свалил)))
меня всегда "прет")Спустя 46 сек.или меня всегда прет)))))))))) -
5 мая 2010 г. 22:28, спустя 15 дней 22 часа 25 минут
а вот маджента хранит информацию об event'ах в XML-файлах. У каждого модуля есть свой /etc/config.xml, который каждый раз парсится при запуске (ну, он-то кешируется, но информация об event'ах из него берется)<adminhtml>
<!– вырезано –>
<events>
<controller_action_predispatch>
<observers>
<awall_exts>
<type>singleton</type>
<class>awall/feed_extensions</class>
<method>check</method>
</awall_exts>
<awall_upds>
<type>singleton</type>
<class>awall/feed_updates</class>
<method>check</method>
</awall_upds>
</observers>
</controller_action_predispatch>
</events>
</adminhtml> -
5 мая 2010 г. 22:31, спустя 2 минуты 50 секунд
Абырвалг, и? хмл - такой же конфигурационный файл как и Events::add("customevent", $handler);Сапожник без сапог -
5 мая 2010 г. 22:36, спустя 5 минут 2 секунды
такой же такой же, да другой.
я думал для одного event'а - один файл, в который модули записывают что нужно запускать
а тут для каждого модуля свой файл, в котором прописывается несколько event'ов. -
5 мая 2010 г. 22:58, спустя 21 минуту 41 секунду
Абырвалг, ахуеть америка только что была открыта в архитектуре модульных систем.Сапожник без сапог -
13 мая 2010 г. 12:27, спустя 7 дней 13 часов 29 минут
а как же drupal hooks, товарищи! пусть и реализовано процедурно, зато прозрачно и просто.
В частности волшебный module_ivoke_all($hook_name, $args=array()) -
-
13 мая 2010 г. 13:52, спустя 18 минут 58 секунд
sad8c, круто, не, правда очень круто :)Сапожник без сапог -
13 мая 2010 г. 14:24, спустя 32 минуты 53 секунды
sad8c, круто, не, правда очень круто :)
если честно, я не совсем уловил интонации этого высказывания)
но, возвращаясь к drupal:
реализация хуков в этой система примитивна, но работает на ура:
собирается массив подключенных в данный момент модулей, берется имя запрашиваемого хука, конструируется имя необходимой функции для вызова хука вида$function = $module_name.$hook_name;
далее банально$function($args);
т.е. регистрация события происходит выховом module_invoke_all(), который просто вызывает запрошенный хук из включенных модулей. -
24 мая 2010 г. 12:00, спустя 10 дней 21 час 35 минут
конечно свою - это же BL
решил все-таки свою не разрабатывать. -
4 июня 2010 г. 12:12, спустя 11 дней 11 минут
решил все-таки свою не разрабатывать
а скопипастить (да да, не наследовать а скопипастить) код из sf и модифицировать его.
Есть методы connect(event, callable, params) и disconnect(event, callable)
Предложение:
добавить subscribe/unsubscribeclass Listener
{
public function on_foo_bar_doSmth()
{ /*. .. */}
public function on_apple_banana_doSmth()
{ /*. .. */}
}
$eventDispatcher->subscribe(new Listener);
$eventDispatcher->notify('foo.bar.doSmth');
$eventDispatcher->notifyUntil('apple.banana.doSmth'); -
-
4 июня 2010 г. 17:05, спустя 2 минуты 26 секунд
Абырвалг, хуйня, слишком сложно и не юзабельно. куда проще
events::attach('eventname', $callback);
evants::fire('eventname');Сапожник без сапог
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!