ホームページ  >  記事  >  バックエンド開発  >  PHP でイベントの監視とトリガーを実装する方法、PHP イベントの監視とトリガー_PHP チュートリアル

PHP でイベントの監視とトリガーを実装する方法、PHP イベントの監視とトリガー_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:13:27967ブラウズ

イベントの監視とトリガーを実装するための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.comtru​​ehttp://www.bkjia.com/PHPjc/915435.html技術記事具体的には次のように分析します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。