LINUX.ORG.RU

PHP - нужен совет по событиям

 ,


0

1

Доброго времени суток! Потихоньку изучаю PHP и заинтересовался тем, как устроены события. Например, в одном участке кода вешаем на событие(предположим удаление пользователя) какую-то функцию. И когда это событие происходит, вызывается функция. Заинтересовался тем, как это работает. Написал очень примитивный класс, в методы которого передается название события и имя функции, которая должна быть вызвана

//---------begin Event
class Event
{
    private  static $events;
  
    public static  function register($event, $func)
    {
       self::$events[$event]=$func;
    }

    public static function send($event)
    {
        foreach (self::$events as $key => $value)
        {
            if($key==$event)
            {
                $func=self::$events[$key];
                $func();
            }
        }
    }
}
//---------end Event

function func1()
{
    echo "programm start!";
}

function func2()
{
    echo "program end!";
}

Event::register("program_start", "func1");
Event::register("program_end", "func2");


Event::send("program_start");

//do something

Event::send("program_end");
В принципе, работает, но есть один момент - неудобно то, что приходится сперва определять где-то функцию, а уже потом передавать имя. В связи с тем возник вопрос, возможно ли, чтобы был такой синтаксис:
Event::register('program_start', function(){
    echo "Program started!");
});
Заранее огромное спасибо!

Ответ на: комментарий от resurtm

Заменил на

Event::register("program_start", function(){echo "programm start!";});
Все заработало, забавно, не знал о такой возможности, спасибо Вам огромное!

gwyllum ()

На будущее.

В стандартной библиотеке есть SplObserver, если вдруг понадобится.

Если нужен медиатор, то используй Symfony/EventDispatcher. Не нужно бояться Symfony, этот компонент очень простой.

Kilte ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.