data-id="1190000004868315">
CodeIgniter 4 では、入力と出力の処理方法が大幅に変更されました。最新の V3 バージョンを含む以前のバージョンでは、入力と出力は、関連する関数を含む 2 つのクラスを使用して処理されました。この処理方法には高度な技術はありませんが、簡単かつ直接的に機能を実現できます。 V4 では、HTTP レイヤーをよりモジュール化して、HTTP リクエストとレスポンスの両方を処理する新しいクラス構造を構築します。
概要
Web アプリケーションを開発する場合 (CLI プログラムとは異なり)、考慮する必要があるのは 2 つのクラスだけです: IncomingRequest
和 Response
。
IncomingRequest クラス
IncomingRequest クラスには、HTTP リクエストと、次のようなリクエストに付随するデータが含まれます。
R ファイル上記の内容は非常に専門的に見えるかもしれませんが、実際は非常に簡単です。これらのクラスのインスタンスはプロパティとして各コントローラーに配置されているため、面倒な場合はこれらのプロパティを直接使用する必要はありません。 Response クラスはコントローラーの出力をキャプチャし、それを応答の本文として自動的に設定します。単純な Hello World は次のようになります:
<code>class Home extends \CodeIgniter\Controller { public function index() { echo "Hello World!"; } }</code>
簡単です。
このフレームワークにより、必要に応じて応答を正確に制御できるようになります。複雑な HTTP キャッシュ戦略を作成し、IncomingRequest クラスを使用して、コンテンツ ネゴシエーションを通じて応答コンテンツをカスタマイズできます。
以下はもう少し複雑な例ですが、コードは理解しやすく、処理も簡単であることがわかります。
<code>class Home extends \CodeIgniter\Controller { public function __construct(...$params) { parent::__construct(...$params); // This controller is only accessible via HTTPS if (! $this->request->isSecure()) { // Redirect the user to this page via HTTPS, and set the Strict-Transport-Security // header so the browser will automatically convert all links to this page to HTTPS // for the next year. force_https(); } } public function index() { $data = [ ... ]; // Set some HTTP cache rules for this page. $this->response->setCache([ 'max-age' => 300, 's-max-age' => 900, 'etag' => 'foo' ]); // Return JSON $this->response->setContentType('application/json') ->setOutput(json_encode($data)); } }</code>
この例では、主に 3 つのことを行います。まず、現在の URL を HTTPS URL にリダイレクトし、Strict-Transport-Security 応答ヘッダーを設定することによって (この方法は多くの主流ブラウザでサポートされており、ブラウザはリクエストを送信する前に HTTP リクエストを HTTPS リクエストに自動的に変換します)このページには HTTPS 経由でアクセスできるようにし、ブラウザがキャッシュを正しく処理できるようにするための HTTP キャッシュ ルールを設定します。これにより、HTTP リクエストの数が減り、サーバーの負荷が軽減され、最終的にパフォーマンスが向上します。 JSON データをユーザーに出力し、コンテンツ タイプが正しいことを確認します。
この記事が、皆さんが CodeIgniter の将来について大まかに理解し、変化は怖くないということを理解してもらうのに役立つことを願っています。 :) 将来的には、比較的安定したアーキテクチャが形成されるまでフレームワークの詳細が最終決定され、これらの内容について説明する記事がさらに書かれる予定です。
以上、CodeIgniter 4 のリクエストとレスポンスを、codeigniter の内容も含めて紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。