ФорумПрограммированиеPHP для идиотов → Events

Events

  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 13 апреля 2010 г. 13:04, спустя 6 часов 55 минут 9 секунд

    конечно свою - это же BL
  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 19 апреля 2010 г. 1:06, спустя 5 дней 12 часов 2 минуты

    есть как минимум две разные цели для "событий"
    - извещение всех заинтересованных о том, что произошло нечто
    - изменение поведения объекта без лишнего наследования

    насколько я понял описание Symfony 2, там только первый случай. автор подчеркивает, что старался реализовать минимум, но легко и быстро
    в Yii events используется для behavior-объектов, хотя не только

    вобщем, как всегда, надо сначала подумать "а зачем оно мне?".
    ιιlllιlllι унц-унц
  • LIFF

    Сообщения: 188 Репутация: N Группа: Адекваты

    Spritz 19 апреля 2010 г. 16:03, спустя 14 часов 56 минут 54 секунды

    Уже не первый раз читаю эту тему, т.к новые комменты есть, но 2 ответ Маврэ
    о! вменяймый чел держите его чтоб с форума не свалил)))
    меня всегда "прет")
    Спустя 46 сек.
    или меня всегда прет))))))))))
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 5 мая 2010 г. 14: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>
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 5 мая 2010 г. 14:31, спустя 2 минуты 50 секунд

    Абырвалг, и? хмл - такой же конфигурационный файл как и Events::add("customevent", $handler);
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 5 мая 2010 г. 14:36, спустя 5 минут 2 секунды

    такой же такой же, да другой.

    я думал для одного event'а - один файл, в который модули записывают что нужно запускать
    а тут для каждого модуля свой файл, в котором прописывается несколько event'ов.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 5 мая 2010 г. 14:58, спустя 21 минуту 41 секунду

    Абырвалг, ахуеть америка только что была открыта в архитектуре модульных систем.
    Сапожник без сапог
  • sad8c

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 13 мая 2010 г. 4:27, спустя 7 дней 13 часов 29 минут

    а как же drupal hooks, товарищи! пусть и реализовано процедурно, зато прозрачно и просто.
    В частности волшебный module_ivoke_all($hook_name, $args=array())
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 13 мая 2010 г. 5:33, спустя 1 час 5 минут 11 секунд

    я не работал с друпалом
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 13 мая 2010 г. 5:52, спустя 18 минут 58 секунд

    sad8c, круто, не, правда очень круто :)

    Сапожник без сапог
  • sad8c

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 13 мая 2010 г. 6:24, спустя 32 минуты 53 секунды

    sad8c, круто, не, правда очень круто :)

    если честно, я не совсем уловил интонации этого высказывания)
    но, возвращаясь к drupal:
    реализация хуков в этой система примитивна, но работает на ура:

    собирается массив подключенных в данный момент модулей, берется имя запрашиваемого хука, конструируется имя необходимой функции для вызова хука вида
    $function = $module_name.$hook_name;

    далее банально
    $function($args);


    т.е. регистрация события происходит выховом module_invoke_all(), который просто вызывает запрошенный хук из включенных модулей.
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 24 мая 2010 г. 4:00, спустя 10 дней 21 час 35 минут


    конечно свою - это же BL

    решил все-таки свою не разрабатывать.
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 4 июня 2010 г. 4:12, спустя 11 дней 11 минут

    решил все-таки свою не разрабатывать

    а скопипастить (да да, не наследовать а скопипастить) код из sf и модифицировать его.

    Есть методы connect(event, callable, params) и disconnect(event, callable)

    Предложение:
    добавить subscribe/unsubscribe

    class 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');
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 4 июня 2010 г. 9:03, спустя 4 часа 50 минут 31 секунду

    ну так как идея, а??!
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 4 июня 2010 г. 9:05, спустя 2 минуты 26 секунд

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

    events::attach('eventname', $callback);

    evants::fire('eventname');
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!