イベントの監視とトリガーを実装するためのphpメソッド、phpイベントの監視とトリガー
この記事の例では、PHP でイベントの監視とトリガーを実装する方法を説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
仕方ないので、PHPでイベント監視を実装する方法を考え、jQueryのイベントバインディングの考え方を参考にして簡単に実装してみました。
主な機能:
1. イベントのバインドは、複数のアクションの 1 つのイベントへのバインドと 1 回限りのイベントのバインドをサポートします
2.イベントをトリガーする
3. ログアウトイベント
コードをコピーします コードは次のとおりです:
class Event
{
保護された静的 $listens = array();
パブリック静的関数 listen($event, $callback, $once=false){
if(!is_callable($callback)) は false を返します
true を返します
}
パブリック静的関数 one($event, $callback){
return self::listen($event, $callback, true);
}
パブリック静的関数remove($event, $index=null){
if(is_null($index))
unset(self::$listens[$event]);
その他
unset(self::$listens[$event][$index]);
}
パブリック静的関数trigger(){
If(!func_num_args()) が返る;
$event = array_shift($args);
If(!isset(self::$listens[$event])) は false を返します
foreach((配列) self::$listens[$event] as $index=>$listen){
$listen['once'] && self::remove($event, $index);
call_user_func_array($callback, $args);
}
}
}
呼び出しの例をいくつか示します:
コードをコピーします
コードは次のとおりです:
// 增加监听散歩イベント
イベント::リッスン('ウォーク', function(){
エコー「私は歩いています...n」;
});
// 增加监听散歩一次性イベント
イベント::リッスン('ウォーク', function(){
echo "聞いています...n";
}、 真実);
// 触覚ウォークイベント
イベント::トリガー('ウォーク');
/*
歩いてます…
聞いています…
*/
イベント::トリガー('ウォーク');
/*
歩いてます…
*/
イベント::one('言う', function($name=''){
echo "私は {$name}n です";
});
イベント::トリガー('言う', 'ディーカ'); // 输出 私はディーカです
イベント::トリガー('言う', 'ディーカ'); // 実行されません
クラスフー
{
パブリック関数 bar(){
echo "Foo::bar() が呼び出されます";
}
パブリック関数 test(){
echo "Foo::foo() が呼び出されます。 agrs:".json_encode(func_get_args())."n";
}
}
$foo = 新しい Foo;
イベント::listen('bar', array($foo, 'bar'));
イベント::トリガー('バー');
イベント::listen('テスト', array($foo, 'テスト'));
イベント::トリガー('テスト', 1, 2, 3);
クラスバー
{
パブリック静的関数 foo(){
echo "Bar::foo() が呼び出されます";
}
}
イベント::listen('bar1', array('Bar', 'foo'));
イベント::トリガー('bar1');
イベント::listen('bar2', 'Bar::foo');
イベント::トリガー('bar2');
関数 bar(){
echo "bar() が呼び出されます";
}
イベント::listen('bar3', 'bar');
イベント::トリガー('bar3');
ここで説明されている大規模な PHP プログラムの設計が役立つことを望みます。
http://www.bkjia.com/PHPjc/915435.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/915435.html技術記事具体的には次のように分析します。