CodeIgniter でミドルウェアを使用してリクエストと応答を処理する方法
はじめに:
CodeIgniter は、Web アプリケーションの開発に広く使用されている軽量の PHP フレームワークです。プロジェクトが成長し、複雑になるにつれて、リクエストと応答の前処理または後処理が必要になることがよくあります。この目的を達成するために、統合されたリクエスト フィルタリングとレスポンス処理のためのミドルウェアを使用できます。この記事ではCodeIgniterでのミドルウェアの使い方を紹介します。
// application/controllers/Welcome.php
class Welcome extends CI_Controller {
public function index() { $this->load->view('welcome_message'); }
}
// application/views / welcome_message.php
$config['enable_hooks'] = TRUE;
次に、ミドルウェア クラスを作成する必要があります。 application/hooks ディレクトリに新しい Middleware.php ファイルを作成します。コード例は次のとおりです:
// application/hooks/Middleware.php
class Middleware {
protected $CI; public function __construct() { $this->CI = &get_instance(); } public function process_request() { // 在这里进行请求的预处理操作 // 例如权限验证、日志记录等 } public function process_response() { // 在这里进行响应的后处理操作 // 例如数据处理、日志记录等 }
}
ミドルウェア クラスでは、まず CodeIgniter のインスタンスを (get_instance() メソッドを通じて) 取得し、それをコンストラクターのクラス メンバー変数に保存する必要があります。これにより、ミドルウェアで CodeIgniter のすべての機能を使用できるようになります。
process_request() メソッドでは、リクエストの前処理用のコードを記述できます。たとえば、ここで権限の検証を実行でき、ユーザーが特定のページまたはインターフェイスにアクセスする権限を持っていない場合、リクエストを中止したり、他のページにジャンプしたりできます。
process_response() メソッドでは、応答後処理のコードを記述できます。たとえば、ここで応答データを処理したり、ログを記録したりできます。
$hook['post_controller_constructor'] = array(
'class' => 'Middleware', 'function' => 'process_request', 'filename' => 'Middleware.php', 'filepath' => 'hooks'
);
$hook ['post_controller'] = array(
'class' => 'Middleware', 'function' => 'process_response', 'filename' => 'Middleware.php', 'filepath' => 'hooks'
);
上記のコードでは、post_controller_constructor と post_controller という 2 つのフックを使用します。
post_controller_constructor フックは、コントローラー コンストラクターの後、コントローラー メソッドを呼び出す前に呼び出されます。これは、リクエストの前処理を行う良い機会です。
post_controller フックは、コントローラー メソッドを呼び出した後、クライアントに応答を送信する前に呼び出されます。この時点で、応答の後処理を行うのに適しています。
// application/controllers/Welcome.php
class Welcome extends CI_Controller {
public function index() { // 打印出请求信息,测试中间件工作正常 print_r($this->input->server('REQUEST_URI')); exit; }
}
このコードは、コントローラー メソッドが実行される前に要求された URI を出力し、プログラムの実行を停止します。このようにして、ミドルウェアがリクエストを正しく処理したかどうかを確認できます。
以上がCodeIgniter でミドルウェアを使用してリクエストと応答を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。