ホームページ  >  記事  >  PHPフレームワーク  >  tp5 フレームワークにフックメカニズムを導入

tp5 フレームワークにフックメカニズムを導入

藏色散人
藏色散人転載
2021-05-08 17:01:113039ブラウズ

次のチュートリアル コラムでは、tp5 フレームワークのフック メカニズムを紹介します。困っている友人の役に立てば幸いです。 1. 公式説明

動作は ThinkPHP 拡張メカニズムの重要な拡張機能です。動作は独立して呼び出すことも、タグにバインドすることもできます。リスニングの場合、動作も重要な役割を果たします公式に提案された CBD モデルでは、動作が ThinkPHP フレームワークにおいて非常に重要であることがわかります。

2. TP5 にはフックが付属しています (タグはすでに TP フレームワークに埋め込まれており、それらを使用するには対応する関数を設定および実装するだけで済みます)

app_init アプリケーション ラベル ビットを初期化する think\App.php の initCommon 関数では、Hook::listen('app_init'); はパラメーターを受け取りません。 think\App.php の run 関数内の

app_begin アプリケーション開始タグは、ルーティングおよびリクエスト情報をロードした後に実行されます。このリクエストのスケジュール情報を保存するパラメータを受け取ります。 think\App.php の module 関数内の
  1. module_init モジュール初期化タグ ビットは、リクエスト コントローラーをロードする前に実行され、パラメーターを受け取り、リクエスト情報を保存します。
  2. action_init コントローラー開始タグ ビットは、think\App.php のモジュール関数内で、コントローラーをロードした後、リフレクションを使用してコントローラーを要求する前に実行されます。配列であるパラメーターを受け取ります。最初の要素はリクエスト コントローラー インスタンス オブジェクトで、2 番目の関数は実行されるコントローラー関数の名前です。
  3. view_filter think\View.php の fetch 関数内のビュー出力フィルター タグ ビットは、パラメーターであるビュー文字列を受け取ります。
  4. app_end アプリケーション終了タグは、think\App.php の run 関数内で、Log を呼び出すときの Hook::listen('app_end');
  5. log_write ログ書き込みメソッド タグです。 :wirte はログの前に実行されます。書き込まれるログ情報であるパラメータを受け取ります。
  6. response_end レスポンス終了タグです。 think\Response.phpのsend関数では、クライアントのリクエストに応答した後に実行されます。
  7. 3. フック関数の登録と監視は think\Hook.php
4 に依存します。システムにはフック関数のみがあり、アプリケーションで使用できます\ phpに登録し、Hook::add()を使って追加することもできます。
> 1. 官方文档数tags.php会自动加载,但是经测试我下载的tp5不会自动加载tags.php文件,所以就手动在think\start.php文件的App::run()->send();函数之前写了一行代码用于,注册tags文件中的钩子实现。代码为
"php
    // 加载Hook
    Hook::import(require APP_PATH . '/tags.php');
"
> 2. 也可以使用Hook::add和Hook::listen来添加自己的钩子函数。Hook::listen()相当于是标签位,Hook::add()则相当于是对标签位相应的实现。所以要确保Hook::add()在Hoo::listen之前执行,不然就没什么用处了。

5. フック関数のバインディング。

フック関数は、クラスのみ、クラス内のメソッド、または匿名関数を直接バインドできます。クラスにバインドした場合、クラス内に run 関数がある場合は run 関数が直接実行され、run 関数がなくフックと同名の関数が存在する場合はその関数が実行されます。 (注: フック関数はキャメルケースで名前が付けられており、フック関数名の優先順位は実行関数の優先順位よりも高くなります)

以上がtp5 フレームワークにフックメカニズムを導入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。