За последние 24 часа нас посетили 34585 программистов и 1712 роботов. Сейчас ищут 792 программиста ...

Посоветуйте Event Framework

Тема в разделе "Прочие вопросы по PHP", создана пользователем alexey_baranov, 9 дек 2010.

  1. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    Привет!

    Кто - нибудь заморачивался такой темой? Я ищу фреймворк желательно на 5.3, чтобы я мог обработчики в виде замыканий назначать, как в c#.

    Типа

    PHP:
    1. <?php
    2. $target.someEvent.AddHandler{
    3.   bla-bla-bla hvatai bolshe kidai dalshe
    4. }
    Спасибо!
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    смотря какая задача, попробовал бы сам написать, там просто Observer и по сути
     
  3. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    А объясните зачем.
    Я сколько не пытался, не нашёл событийному программированию сколько-нибудь обширного применения в php-сценариях.
     
  4. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    vasa_c
    а чем ПХП-сценарии отличаются от, например, c# кода?

    Я раньше когда надо было расширить класс, наследовал его и работал с новым классом. Потом некоторое время поработал ан c# и мне понравилось как тоже самое можно сделать проще через события. Хочу так же теперь на пхп делать. Тем более замыкания в 5.3 появились.
     
  5. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    alexey_baranov
    Тем что на С# пишутся, например оконные приложения, где действия пользователя могут вызывать события. У PHP в контексте сайтостроения этого нет.
    На С# могут быть написаны "долгоиграющие" программы, которые могут менять свое состояние и, соответственно, выбрасывать события. PHP это обычно "взлетел и умер", здесь события просто не успевают возникнуть.

    vasa_c
    Если писать систему автоматизации, например, то можно строить/хранить модель системы. Тогда: поставщик изменил цену, оператор вносит это изменение, в системы возникает событие priceChanged. Коряво, но нечто интересное в этом есть.
     
  6. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    Volt(220)
    Да, этим всем отличается. И это все не мешает использовать события. Я имел в виду чем отличаются Что есть такого в с# и нет в пхп, что мешает использовать события в ПХП? События нужны в консольных приложениях не меньше, чем в оконных. Это не вопрос пользовательского интерфейса. И в коротких не меньше. чем в длинных.

    Примеров дохера, что за глупый вопрос? Как буд-то пхп - это какой-то особый язык, где запрещено писать события. Откройте доктрину и увидете кучу событий. Доктрина же на ПХП написана. Любой код можно писать на событиях. Это просто вопрос стиля.

    Лично у меня через пол года на c# кукушку сдвинуло. Раньше если мне надо было определить некое поведение того, что пользователь закрывает некую страницу, я наследовал от базового контролера страницы новый контроллер для этой страницы и там переопределял метод OnClose(). Это правильно? Да, можно и так. Но теперь мне кажется, что проще будет добавить в базовый контролер страницы событие Close и просто прицеплять к нему разные обработчики этого события. И так и так будет одинаково работать. Результат в итоге один- пользак нажал- выполнилось то, что должно было выполниться. Просто разные стили как это исполнить. Во втором меньше классов и второй короче.
     
  7. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Это не консольные приложения.
    Это отдельные сценарии, которые выполняют быстро какую-то обработку, выводят что-то и дохнут.

    Сценарий, который вызывается, чтобы вывести какую-то страницу не будет перехватывать событие удаления пользователя и как-то его обрабатывать.
     
  8. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    alexey_baranov
    Я не говорю, что в PHP нельзя использовать события. Но придумать хороший пример для использования событий достаточно сложно.

    Первое, что приходит в голову при разговоре о событиях - обработка действий пользователя. Но в web этим обычно занимается JavaScript.
    Второе, что приходит в голову - изменение состояния при изменении данных. Но в PHP обычно нет системы, которая должна реагировать на изменение данных. Изменение данных сразу подхватывается при следующей загрузке.

    Потому и возникает вопрос: "А где в PHP событийное программирование к месту? Где получается хорошо и красиво его использовать?"
     
  9. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Volt(220)
    libevent в том же phpdaemon, в простых скриптах хз где оно там к месту, но реализация на php это обычный паттерн Observer
     
  10. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    Volt(220)
    Ну, во-первых, JavaScript отвечает за обработку событий пользователя только на стороне клиента, а на стороне сервера за это отвечают пхп-контролеры. У меня там будут использоваться события. Как раз про это выше написал.

    А, во-вторых, вот я не понимаю, почему постоянно спрашивают, где в пхп применять события. Где же их применять красиво в пхп? причем в других языках все понятно где. Вот ты пишешь на любом другом языке? Если пишешь, то ты используешь события только в формах дизайнера или и в прикладных объектах? если и в прикладных тоже, то что тебе мешает это же самое делать в пхп? пхп ничем не отличается от других языков В ЭТОМ (подчеркиваю) . да, скрипт выполняется пару секунд. да, ну и что ? еще раз говорю, открой доктрину и увидешь, Где получается хорошо и красиво их использовать. Если у меня еще раз спросят где в пхп использовать события, буду материться и плеваться. Кто не знает где в пхп использовать события, но хочет это неприменно выяснить, не пишите сюда. пишите, кто знает хорошую обертку событий на пхп 5.3.
    Спасибо!
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    у пхп событиев-то одно: он родился =)
    он должен отрубить свое и как можно скорее застрелиться. Куда там события ляпать...

    События всегда подазумевают две вещи: это длительность исполнения (затем события и нужны, чтобы можно было простаивать все остальное время), и генератор событий.

    В пхп параметры передаются, он родится, он пашет, он мре. Все. И чем скорее он мре - тем лучче.

    По сути пхп скрипты это почти всегда и есть обработчики одного конкретного квантованного события.
     
  12. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Мне казалось, что на сервер передается конкретное событие, которое зашифровано либо в адресе (mysite.ru/blog/post), либо в параметрах (controller=blog&action=post). Далее либо по адресу уже находится обработчик, либо роутер вызывает нужный обработчик.
    Т.е. ты предлагаешь вместо роутера использовать события?

    Потому что не видят где. =))

    Выше я написал что - отсутствие либо генератора события, либо потребителя.

    Где конкретно смотреть?
     
  13. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Вот, читаю тему с самого начала, и не нашел слов чтобы эту мысль выразить)

    Получил запрос, создал объекты, выполнил методы, отдал результат, умер.
    Всё.

    В этой цепочке нет места пользовательским событиям. Следующий запрос - это совсем другая история, ничего не знающая о предыдущем запросе.
     
  14. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    Volt(220)
    ептить моптить !
    google doctrine event

    бландинко?
     
  15. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    А symfony2 не смотрел? Вроде как в марте уже будет, как раз 5.3. Даже в текущей 1.4 не будет сложно такое реализовать.
     
  16. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Зачем приходить на форум, чтобы в итоге на говно изойтись?
    За 550 сообщений не выяснили, что лучшая фраза вызвать бессмысленный флейм, это "не пишите сюда"?

    Область применения отличается.
     
  17. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    В доктрине, эти listener'ы в виду имеете: http://blog.fxposter.org/2009/02/07/hid ... -doctrine/ ?
    С нормальным событийным программированием они связаны не больше чем preg_replace_callback().
     
  18. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    в symfony я имею ввиду такие:

    товарищ плагин выкидывает эвент:

    PHP:
    1.  
    2. <?php
    3. $this->dispatcher->notify(new sfEvent($this, 'store.transaction.success', array(
    4.                     'request' => $this->ecomm
    5.                 )));
    6.  
    а наш код на него подписывается:

    PHP:
    1.  
    2. <?php
    3. $this->dispatcher->connect('store.transaction.success', array('TransactionTable', 'handleUpdate'));
    4.  
     
  19. GydruS

    GydruS Активный пользователь

    С нами с:
    9 дек 2010
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    77
    Может, топикстартеру всего-то нужен диспатчер, который по определенным параметрам запроса инклудит или выполняет определенные участки кода? Если так - то это не самый сложный механизм, и его написать можно за пару дней. Другое дело - огранизовать достаточный контекст вокруг этого механизма. И тут надо быть очень осторожным - ибо любое разростание грозит тормозами.

    А еще, как вариант, посмотрите в сторону Delphi for PHP - вот это реально крутая штука - и обертка, как вам хочется, и события, и Ajax генерит сама! И что самое крутое - нативный код, а не интерпертатор =) Не знаю, правда, есть ли ее варианты под *nix серверы...
     
  20. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    Volt(220)
    vasa_c
    не флудите тему! я не разу не спросил нужны ли в пхп события. Нах вы мне полдня доказываете, что не нужны? всю тему засрали!

    Если дальше хотите продолжать, вот вам спец тема. туда флудите http://www.php.ru/forum/viewtopic.php?p=251915#251915
     
  21. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    [mumblemode=on]Добавлю в закладки, эпик напрашивается, потом почитаю[/mumble]