Home > Backend Development > PHP Tutorial > PHP implements listening events_PHP tutorial

PHP implements listening events_PHP tutorial

WBOY
Release: 2016-07-13 10:25:30
Original
754 people have browsed it

How to implement event monitoring is a simple implementation based on jQuery's event binding ideas.
Main functions:
1. Binding events support binding multiple actions to one event, and support binding one-time events
2. Trigger events
3. Logout events

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;
  self::$listens[$event][] = array('callback '=>$callback, 'once'=>$once);
           return true; ::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;
$args = func_get_args();
$event = array_shift ($args);
if(!isset(self:: $listens[$event])) return false;
foreach((array) self::$listens[$event] as $index=>$listen){
];
            $listen['once'] && self::remove($event, $index); 🎜>

The following are some examples of calls:



Copy code

The code is as follows:

// Add Listening for walk events
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 the 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');


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/825088.htmlTechArticleHow to implement event monitoring, refer to jQuery’s event binding idea, and implement it simply. Main functions: 1. Binding events supports binding multiple actions to one event, and supports binding one-time...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template