ミドルウェアは、アプリケーションに受信する HTTP リクエストを検査およびフィルタリングするための便利なメカニズムを提供します。たとえば、Lithe には、アプリケーション ユーザーが認証されているかどうかを確認するミドルウェアが含まれています。ユーザーが認証されていない場合、ミドルウェアはユーザーをアプリケーションのログイン画面にリダイレクトします。ただし、ユーザーが認証されている場合、ミドルウェアはアプリケーション内でのリクエストの続行を許可します。
Lithe でのミドルウェアの仕組み
Lithe では、ミドルウェアは、アプリケーションの要求/応答ループ内の要求オブジェクト ($req)、応答オブジェクト ($res)、および $next 関数にアクセスできる関数です。 $next 関数は、呼び出されると、現在のミドルウェアの次のミドルウェアを実行する Lithe ルーター内の関数です。
ミドルウェア関数は、アプリケーションに入る HTTP リクエストを検査、フィルタリング、処理するための便利なメカニズムを提供します。
ミドルウェア関数は次のタスクを実行できます:
- 任意のコードを実行します。
- リクエストオブジェクトとレスポンスオブジェクトに変更を加えます。
- リクエストとレスポンスのサイクルを終了します。
- スタック内の次のミドルウェアを呼び出します。
現在のミドルウェア関数が要求/応答サイクルを終了しない場合は、$next() を呼び出して次のミドルウェア関数に制御を渡す必要があります。それ以外の場合、リクエストは保留中になります。
ミドルウェア機能の要素
次のコードは、ミドルウェア関数呼び出しの要素を示しています。
$app->use(function ($req, $res, $next) { $next(); });
場所:
- $req: ミドルウェア関数の HTTP リクエスト引数。慣例により「$req」と呼ばれます。
- $res: ミドルウェア関数の HTTP 応答引数。慣例により「$res」と呼ばれます。
- $next: ミドルウェア関数のコールバック引数。慣例により「$next」と呼ばれます。
ミドルウェアの定義
myLogger という単純なミドルウェアの例から始めましょう。このミドルウェアは、リクエストが通過するたびに LOGGED メッセージを出力します。ミドルウェアは、myLogger:
という変数に割り当てられる関数として定義されます。
$myLogger = function ($req, $res, $next) { echo 'LOGGED'; $next(); };
上記の $next() の呼び出しに注意してください。この関数を呼び出すと、アプリケーション内の次のミドルウェア関数が呼び出されます。 $next() 関数は PHP や Lithe の一部ではありませんが、ミドルウェア関数に渡される 3 番目の引数です。 $next() 関数には任意の名前を付けることができますが、慣例により常に「next」と呼ばれます。混乱を避けるために、常にこの規則を使用してください。
ミドルウェアは、HTTP リクエストがアプリケーションに到達する前に通過する必要がある一連の「レイヤー」と考えるのが最善です。各レイヤーはリクエストを検査し、完全に拒否することもできます。
ミドルウェアのロード
ミドルウェア関数をロードするには、目的のミドルウェア関数を指定して、LitheApp クラスの use() メソッドを呼び出します。たとえば、次のコードは、ルート パス (/) へのルートを実行する前に、myLogger ミドルウェア関数をロードします。
$app->use(function ($req, $res, $next) { $next(); });
アプリケーションはリクエストを受信するたびに、「LOGGED」というメッセージを出力します。
ミドルウェアのロード順序は重要です。最初にロードされたミドルウェア関数も最初に実行されます。
myLogger ミドルウェア関数は単にメッセージを出力し、$next() 関数を呼び出してリクエストをスタック上の次のミドルウェア関数に渡します。
ミドルウェアの使用
Lithe アプリケーションは次のタイプのミドルウェアを使用できます:
- アプリケーションレベルのミドルウェア
- ルーターグレードのミドルウェア
- サードパーティのミドルウェア
アプリケーションレベルのミドルウェア
use() メソッドと METHOD() メソッドを使用して、アプリケーション レベルのミドルウェアをアプリケーション オブジェクトのインスタンスにバインドします。METHOD は、ミドルウェア関数が処理するリクエストの HTTP メソッド (GET、PUT、POST など) です。小文字。
この例は、アセンブリ パスのないミドルウェア関数を示しています。この関数は、アプリケーションがリクエストを受信するたびに実行されます。
$myLogger = function ($req, $res, $next) { echo 'LOGGED'; $next(); };
以下の例は、パス /user/:id で GET リクエストを処理するミドルウェアを示しています。
$app = new \Lithe\App; $myLogger = function ($req, $res, $next) { echo 'LOGGED'; $next(); }; $app->use($myLogger); $app->get('/', function ($req, $res, $next) { $res->send('Hello World!'); });
ルーターレベルのミドルウェア
ルーター レベルのミドルウェアは、LitheHttpRouter のインスタンスに関連付けられていることを除いて、アプリケーション レベルのミドルウェアと同じように機能します。
$app->use(function ($req, $res, $next) { echo 'Hello World!'; $next(); });
USE 関数と METHOD 関数を使用してルーターレベルのミドルウェアをロードします。
次のコード例は、ルーターレベルのミドルウェアを使用するミドルウェア システムを示しています。
$app->get('/user/:id', function ($req, $res, $next) { // Se o ID do usuário for '0', passa para o próximo middleware if ($req->param('id') === '0') { return $next(); } // Caso contrário, envia uma resposta específica $res->send('ID não é 0'); }, function ($req, $res) { // Envia uma resposta quando o ID for '0' $res->send('regular'); });
サードパーティのミドルウェア
サードパーティのミドルウェアを使用して、Lithe アプリに機能を追加します。
目的の機能に必要な PHP モジュールをインストールし、それをアプリケーション レベルまたはルーター レベルでアプリケーションにロードします。
次の例は、セッションミドルウェアである LitheMiddlewareSessionsession 関数のロードを示しています。
$router = new \Lithe\Http\Router;
Lithe で一般的に使用されるサードパーティのミドルウェア機能の部分的なリストについては、「サードパーティのミドルウェア」を参照してください。
構成可能なミドルウェア
ミドルウェアを構成可能にする必要がある場合は、オプションまたはその他のパラメーターの配列を受け入れる関数を作成し、入力パラメーターに基づいてミドルウェア実装を返します。
$app->use(function ($req, $res, $next) { $next(); });
これで、以下に示すようにミドルウェアが使用できるようになります。
$myLogger = function ($req, $res, $next) { echo 'LOGGED'; $next(); };
以上がLithe のミドルウェア: その仕組みと独自のミドルウェアを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

メモ帳++7.3.1
使いやすく無料のコードエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
