How to implement event monitoring and triggering in php, php event monitoring and triggering
The example in this article describes how to implement event monitoring and triggering in PHP. Share it with everyone for your reference. The specific analysis is as follows:
I had nothing to do and thought about how to implement event monitoring in PHP. I referred to jQuery’s event binding idea and implemented it simply.
Main functions:
1. Binding events supports binding multiple actions to one event and supports binding one-time events
2. Trigger event
3. Logout event
Copy code The code is as follows:
class Event
{
protected static $listens = array();
Public static function listen($event, $callback, $once=false){
If(!is_callable($callback)) return false;
return true;
}
Public static function one($event, $callback){
return self::listen($event, $callback, true);
}
Public static function remove($event, $index=null){
if(is_null($index))
unset(self::$listens[$event]);
else
unset(self::$listens[$event][$index]);
}
Public static function trigger(){
If(!func_num_args()) return;
$event = array_shift($args);
If(!isset(self::$listens[$event])) return false;
foreach((array) self::$listens[$event] as $index=>$listen){
$callback = $listen['callback'];
$listen['once'] && self::remove($event, $index);
call_user_func_array($callback, $args);
}
}
}
Here are some examples of calls:
Copy code
The code is as follows://Add monitoring walk event
Event::listen('walk', function(){
echo "I am walking...n";
});
// Add one-time listening event for walk
Event::listen('walk', function(){
echo "I am listening...n";
}, true);
// Trigger walk event
Event::trigger('walk');
/*
I am walking...
I am listening...
*/
Event::trigger('walk');
/*
I am walking...
*/
Event::one('say', function($name=''){
echo "I am {$name}n";
});
Event::trigger('say', 'deeka'); // Output I am deeka
Event::trigger('say', 'deeka'); // not run
class Foo
{
Public function bar(){
echo "Foo::bar() is calledn";
}
Public function test(){
echo "Foo::foo() is called, agrs:".json_encode(func_get_args())."n";
}
}
$foo = new Foo;
Event::listen('bar', array($foo, 'bar'));
Event::trigger('bar');
Event::listen('test', array($foo, 'test'));
Event::trigger('test', 1, 2, 3);
class Bar
{
Public static function foo(){
echo "Bar::foo() is calledn";
}
}
Event::listen('bar1', array('Bar', 'foo'));
Event::trigger('bar1');
Event::listen('bar2', 'Bar::foo');
Event::trigger('bar2');
function bar(){
echo "bar() is calledn";
}
Event::listen('bar3', 'bar');
Event::trigger('bar3');
I hope this article will be helpful to everyone’s PHP programming design.
http://www.bkjia.com/PHPjc/915435.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/915435.htmlTechArticleHow to implement event monitoring and triggering in php, php event monitoring and triggering This article describes the implementation of event monitoring and triggering in php method. Share it with everyone for your reference. The specific analysis is as follows:...