この記事ではCodeIgniterフックの使用例について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
CodeIgniter の実行フローチャートには 7 つの楕円ボックスがあります。これは、実行プロセス中に 7 つのフックが埋め込まれることを意味します。それでは、まずフックとは何なのかを見てみましょう。
オンラインで見つかった 2 つの段落のテキスト:
フックの完全な実装はイベント駆動型と呼ばれる必要があります。イベント駆動は 2 つの段階に分かれています。最初の段階は、将来発生する可能性のある「イベント」に名前を付けることです。簡単な実装方法は、永続オブジェクトを生成することです。またはグローバル変数を登録し、イベント名と、そのイベントに対応するクラスとメソッドをグローバル変数に挿入します。それはフックを取り付けることです。
第 2 段階は、イベントをトリガーすることです。これは基本的に、トリガーされるイベントの名前についてイベント グローバル変数をクエリし、登録されたクラスとメソッドを見つけてインスタンス化し、実行します。このようにして、プログラムが整っていなければならないという従来のルールを取り除き、分離の目的をさらに達成することができます。
フック関数は、他のアプリケーションからのメッセージをインターセプトして処理できます。特定のメッセージが送信されるたびに、フック プログラムは宛先ウィンドウに到達する前にメッセージをキャプチャします。つまり、フック関数が最初に制御を取得します。このとき、フック関数はメッセージを処理(変更)したり、処理せずに配信を継続したり、メッセージ配信を強制終了したりすることができます。
次の内容を確認できます:
1. フック機能はあらかじめ設定されており、特定の条件下でトリガーされます。
2. フック関数がプログラムを引き継いだ後、プログラムの方向に影響を与える可能性があります。
CIデフォルトフック
CIには7つのフックが設定されており、各フックは比較的独立しています。最初の 3 つのフックはインスタンス化の前に設定されます。つまり、get_instance インスタンスは使用できず、インスタンス化されたクラスを使用するには global が必要です。 7 つのフックの関数マニュアルは、キャッシュされた出力を書き換えたり、出力を処理したりできるなど、比較的明確です。
CIフックをトリガーするにはどうすればよいですか?
CI は設定ファイルにフック スイッチを設定しています。フックを使用するには、まずスイッチをオンにしてから、post_controller_constructor フックを設定するなど、config/hook.php でフック配列を設定する必要があります。 リーリー
コントローラーがインスタンス化されると、アクションを呼び出す前に、フック ディレクトリの Hook.php にある post_controller_constructor メソッドの実行がトリガーされます。このメソッドでいくつかの処理を行うことができます。
フックアプリケーション
今のところ、CI フックの素晴らしさに気づいていません。インターネット上には、CI フックを使用してパーミッション制御、つまり post_controller_constructor でパーミッション判定を行うプログラムがいくつかあります。これは、このフックがコンストラクターのようなものであり、次に実行するメソッドは許可があり、実行可能かどうかをコンストラクタで判断します。ただし、この関数は MY_Controller にも実装でき、さらに優れたものになります。 CI フックはグローバルであるため、フォアグラウンドでもバックグラウンドでもフックが開始されますが、このフック プログラムは判断を行うことができますが、ここでの判断が必ずしも最適であるとは限りません。前述したように、MY_Controller 内の異なるモジュールのパブリック コントローラーは分離されており、バックエンドのアクセス許可のみを制御する必要がある場合は、バックエンドのパブリック コントローラーで直接実行できます。フロントエンド、必要な部分のみを制御します。これは CI 以外の例ですが、考え方は同じです。連携チャネルのユーザーログイン登録機能には多くのパートナーがいますが、異なるパートナーでも同じ基本情報で登録する必要がありますが、パートナーごとに特別なフィールドや認証方法が異なる場合があります。
問題に遭遇したとき、私たちは日常生活の中でそれを大局的に捉えることができることがよくあります。登録処理ロジックを例にとると、プロセスの 1 つが変更されていないことがわかります。パラメータ受付→情報登録前処理→登録→情報登録後の処理変化したこと?各ステップは変更される可能性がありますが、プロセスは変更されません。したがって、処理前、処理後などの関連する場所にフックを設定し、特定の状況に処理ロジックを分散することができます。フックを設定する具体的な方法は、プロジェクトによって異なります。
この方法は、多数のパートナーがいるにもかかわらず、簡単にグループ化できることも事実によって証明されています。したがって、中間の特定のステップが変更されている間に、このプロセスの変化するニーズに対応するためにフックを使用すると非常に便利です。
簡単に言うと、フックは特定の条件でプログラムを実行することであり、より簡単に言うと、フックは if 判定を緩和する方法です。
if 判定が過剰になるとプログラムが読みにくくなり保守しにくくなりますが、フック処理を行うことでプログラムをより柔軟にすることができます。フックには特定のトリガー条件があり、その条件は構成したり、データベースから読み込んだり、リフレクションなどのテクノロジーによって実装したりできます。CodeIgniter 関連のコンテンツに興味のある読者は、このサイトの特別トピック「codeigniter 入門チュートリアル」と「CI (CodeIgniter) フレームワーク上級チュートリアル」をチェックしてください
この記事が、CodeIgniter フレームワークに基づく皆様の PHP プログラム設計に役立つことを願っています。