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
100db36a723c770d327fc0aef2ce13b1
93f0f5c25f18dab9d176bd4f6de5d30e
b2386ffb911b14667cb8f0f91ea547a7CodeIgniter へようこそ6e916e0f7d1e588d4f442bf645aedb2f
9c3bca370b5104690d9ef395f2c5f8d1
6c04bd5ca3fcae76e30b72ad730ca86d
1b080b0e6f06a87e2a3111431390ac37CodeIgniter へようこそ473f0a7621bec819994bb5020d29372a
36cc49f0c466276486e50c850b7e4956
73a6ac4ed44ffec12cee46588e518a5e
$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 サイトの他の関連記事を参照してください。