PHPにおけるフック関数の実現と認識

3023 ワード

このようなプログラムがあれば、function fun(){ fun1(); fun2(); }
  まず、プログラムがfun 1()を実行した後にfun 2()を実行し、fun()を終了する.
しかし、関数にいくつかの変化をしたい場合は.たとえばfunは解析関数であり、後期に豊富な解析関数を提供することを望んでいますが、どの関数で解析するかは、プロファイルで構成したいと考えています.この時点でフックの力を発揮できます.
  我々はfunction fun(){}にフック点Hを加えて、Hという関数を実行する前に、フック関数を構成して、私は必要に応じて解析することができます.
例:$h=config_item("parser_fun");// function fun($data){ global $h; return $h(); }
このほか、PHPは文字列に基づいて独自のクラスを提供し、クラスのメソッドを呼び出し、いくつかのパラメータを渡すことができます.これらはPHPプログラムの作成、後期のメンテナンス拡張に堅固な基礎を築きます.$c=get_class_name();// $m=get_method_name();// $k=$c->$m();//
原文リンク:PHP中フック関数&実装
 
1、フック関数は予め設定され、特定の条件下でトリガーされる.
2、フック関数はプログラムを引き継いだ後、プログラムの行方に影響を与えることができる.
フックフックの完全な実装はイベント駆動と呼ぶべきである.イベント駆動は2つのフェーズに分けられ、最初のフェーズはイベントを登録し、将来発生する可能性のある「イベント」に名前を付けることを目的としています.簡単な実装方法は、単一のインスタンスモードで永続的なオブジェクトを生成したり、グローバル変数を登録したりして、イベント名、およびそのイベントに対応するクラスとメソッドでグローバル変数を挿入することです.つまりフックを掛けます.
 第2段階はトリガーイベントであり、本質的にはイベントのグローバル変数でトリガーするイベント名をクエリーし、登録されたクラスとメソッドを見つけてインスタンス化して実行します.これにより,従来方式ではプログラムが順序付けされなければならないルールから脱し,結合解除の目的をさらに実現できる.
フック関数は、他のアプリケーションのメッセージをキャプチャして処理できます.フックプログラムは、特定のメッセージが発行されるたびに、目的ウィンドウに到達する前に、メッセージ、すなわちフック関数が先に制御権を取得する.このときフック関数は、メッセージを加工(変更)してもよいし、処理せずにメッセージを伝達し続けてもよいし、メッセージの伝達を強制的に終了させることもできる.