この記事では、PHP でのイベント監視とトリガーのサンプル プログラム コードの実装について学生に紹介します。これらの方法が、困っている友人たちに役立つことを願っています。
仕方ないので、PHPでイベント監視を実装する方法を考え、jQueryのイベントバインディングの考え方を参考にして簡単に実装してみました。
主な機能:
1. イベントのバインドは、複数のアクションの 1 つのイベントへのバインドと 1 回限りのイベントのバインドをサポートします
2.イベントをトリガーする
3. ログアウトイベント
コードは次のとおりです |
コードをコピー |
クラスイベント
{
保護された静的 $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」;
});
// 散歩に 1 回限りのリスニング イベントを追加します
イベント::リッスン('ウォーク', function(){
エコー「聞いています...n」;
}、本当です);
// ウォークイベントをトリガーする
イベント::トリガー('ウォーク');
/*
歩いてます…
聞いています…
*/
イベント::トリガー('ウォーク');
/*
歩いてます…
*/
イベント::one('言う', function($name=''){
エコー「私は {$name}n です」;
});
Event::trigger('say', 'deeka'); // 出力 私は deeka です
Event::trigger('say', 'deeka') // 実行されません
クラスフー
{
パブリック関数 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');
http://www.bkjia.com/PHPjc/632901.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/632901.html
技術記事
この記事では、PHP でイベントの監視とトリガーを実装するためのプログラム コードを紹介します。これらの方法が必要な方の役に立てば幸いです。 何もすることがないので考えてみました…
|
|