現代の Web 開発では、ルーティングは避けられない部分です。ルーティングは、Web ページとアプリケーションの間のブリッジとして機能し、HTTP リクエストとアプリケーションの特定の操作を接続します。ルーティングの目的は、受信 URL リクエストを適切なハンドラーにマップして、URL リクエストに基づいてページの初期化やその他の操作を実行できるようにすることです。 PHP では、ルーティング システムは通常、「FastRoute」と呼ばれるサードパーティ ライブラリを使用して実装されます。
FastRoute は、高性能 PHP ルーティング ライブラリです。多数のルーティング ルールを処理し、カスタム パーサーを使用して高速ルーティング テーブルを生成できます。この記事では、FastRoute を使用して URL ルーティングを行う方法を紹介します。
まずはもちろん、FastRoute をインストールします。 Composer を使用して FastRoute をインストールできます。次の行をcomposer.jsonファイルに追加します:
{ "require": { "nikic/fast-route": "^1.3" } }
次に、次のコマンドを実行してインストールします:
$ composer install
すべての URL ルーティングを処理するルーターを作成します。ルーターは、FastRoute ルーティング システムのコア コンポーネントであり、すべての受信 URL 要求を処理し、それらを正しいハンドラーにマッピングする役割を果たします。
まず、すべてのルーティング コードを保存するために、プロジェクトのルート ディレクトリに「routes.php」というファイルを作成しましょう。
このファイルの上に、次のコードを追加して名前空間を定義します。
<?php namespace MyApp; use FastRouteRouteCollector; $dispatcher = FastRoutesimpleDispatcher(function(RouteCollector $r) { // 添加路由规则到这里来 });
このコードでは、FastRoute スケジューラ インスタンスを作成します。この例では、simpleDispatcher 関数を使用して、デフォルトのルート リゾルバーを使用するように FastRoute を構成し、それを「$dispatcher」という変数にバインドします。
コンストラクターは、RouteCollector インスタンスを使用してすべてのルーティング ルールを構成する必要がある匿名関数を受け取ります。 RouteCollector は、FastRoute ルーティング ボールトの主要コンポーネントです。これを使用してすべてのルーティング ルールを追加します。
ルーティング ルールを追加するときは、通常、HTTP メソッドとルーティング パスの 2 つのパラメータが必要です。 HTTP メソッドには、GET、POST、PUT、DELETE などがあります。ルーティング パスは、受信 URL のパスを指します。プレースホルダーを使用して、URL の動的フラグメントをキャプチャできます。
次はルーティング ルールを追加する例です:
$r->addRoute('GET', '/user/{id:d+}', 'UserController@get');
この例では、HTTP メソッドを GET として指定し、要求されたルーティング パスは /user/{id:d} です。ルートを定義するには、{ } で囲まれたプレースホルダー {id} を使用することに注意してください。このプレースホルダーは、リクエスト パスの動的部分をキャプチャします。
最後に、コントローラーの名前と実行されるメソッドの名前を最後のパラメーターとしてルートに渡します。この例では、「UserController@get」を使用してコントローラーを表し、ユーザー ページのメソッドを取得します。
ルーターとルーティング ルールのセットアップが完了しました。次に、URL リクエストを処理するコードを記述する必要があります。各リクエストを確認し、正しいルーターに割り当てる必要があります。 FastRoute は、このタスクを実行するために「Dispatcher」と呼ばれるコンポーネントを提供します。各リクエストは Dispatcher コンポーネントによって処理されます。
まず、プロジェクトにルーティング ルール ファイルを導入して、ディスパッチャーを初期化する必要があります。次のコードをindex.php ファイルに追加できます。
<?php require_once __DIR__ . '/vendor/autoload.php'; $dispatcher = require_once __DIR__ . '/routes.php';
これにより、「routes.php」ファイルで設定した $route 変数が $dispatcher 変数に割り当てられます。これで、Dispatcher を使用してリクエストを処理できるようになりました。次のコードをindex.php ファイルに追加します。
$routeInfo = $dispatcher->dispatch($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']); switch ($routeInfo[0]) { case FastRouteDispatcher::NOT_FOUND: // 处理404错误 break; case FastRouteDispatcher::METHOD_NOT_ALLOWED: // 处理不允许的HTTP方法 break; case FastRouteDispatcher::FOUND: // 处理请求 break; }
このコードでは、$dispatcher のディスパッチ メソッドを使用してリクエストをルーターに渡します。この関数は、ルーターによって一致した HTTP メソッド、ルーティング パス、およびルーターのハンドラーの 3 つの要素を含む配列を返します。ルーターの一致結果に応じて、switch ステートメントを使用してさまざまな種類のリクエストを処理できます。
これで、FastRoute を使用してルーティング処理を行う手順が完了しました。ルーターを作成してルーティング ルールを追加し、リクエストの処理方法を定義し、ルート マッチング結果の処理方法を理解しました。
概要
この記事では、URL ルーティングに FastRoute を使用する方法を紹介しました。このプロセスは 3 つのステップで構成されます。
FastRoute は、シンプルで使いやすい高パフォーマンスの PHP ルーティング ライブラリです。 FastRoute は、速度の利点と開発の利便性により、PHP 開発で推奨される方法となっています。実際の運用環境では、キャッシュを追加してルーティングのパフォーマンスを向上させることもできます。
以上がPHPでURLルーティングにFastRouteを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。