ホームページ > バックエンド開発 > PHPチュートリアル > PHP8.0のルーティングライブラリ

PHP8.0のルーティングライブラリ

WBOY
リリース: 2023-05-14 13:00:02
オリジナル
1324 人が閲覧しました

PHP は広く使用されているサーバーサイド スクリプト言語であり、多くの Web アプリケーションは PHP を使用して開発されています。 Web アプリケーションでは、ルーティングは不可欠なコンポーネントです。ルーティングの目的は、ブラウザからのリクエストを適切なコントローラーまたはハンドラーに分配することです。

PHP8.0 は PHP の最新バージョンであり、多くの新機能と改善が加えられており、そのうちの 1 つはルーティングです。 PHP8.0 のルーティング ライブラリは、Web 開発者がルーティング機能をより簡単に実装できるようにする強力なライブラリです。

このルーティング ライブラリの名前は FastRoute で、高速で柔軟なルーティング ライブラリです。その目標は、高速で信頼性の高いルーティング ソリューションを提供することです。 FastRoute は、RESTful ルーティング、動的ルーティング、パラメータ マッチング、正規表現ルーティングなどの機能をサポートします。

FastRoute を使用してルーティング機能を実装する方法を見てみましょう。まず、PHP プロジェクトに FastRoute ライブラリをインストールする必要があります。 Composer を使用してインストールできます。

composer require nikic/fast-route
ログイン後にコピー

次に、ルーター クラスを作成し、いくつかのルーティング ルールを定義する必要があります。これらのルーティング ルールにより、Web アプリケーションでリクエストがどのように処理されるかが決まります。

次に、単純なルーター クラスの例を示します。

use FastRouteRouteCollector;

class Router
{
    private $routeCollector;

    public function __construct(RouteCollector $routeCollector)
    {
        $this->routeCollector = $routeCollector;
    }

    public function addRoute($httpMethod, $route, $handler)
    {
        $this->routeCollector->addRoute($httpMethod, $route, $handler);
    }

    public function dispatch($httpMethod, $uri)
    {
        $routeInfo = $this->routeCollector->dispatch($httpMethod, $uri);

        switch ($routeInfo[0]) {
            case FastRouteDispatcher::NOT_FOUND:
                // handle 404 Not found
                break;
            case FastRouteDispatcher::METHOD_NOT_ALLOWED:
                // handle 405 Method not allowed
                break;
            case FastRouteDispatcher::FOUND:
                $handler = $routeInfo[1];
                $vars = $routeInfo[2];
                // call $handler with $vars
                break;
        }
    }
}
ログイン後にコピー

上の例では、Router という名前のクラスを作成し、FastRoute の RouteCollector インスタンスに渡しました。このクラスには 3 つのメソッドがあります:

  • addRoute($httpMethod, $route, $handler): ルーティング ルールを追加するために使用されます。 $httpMethod は、GET、POST、PUT、DELETE などの HTTP リクエスト メソッドを指します。 $route はルーティング ルールです。 $handler は、リクエストを処理するために使用されるコントローラーとアクションを含むコールバック関数です。
  • dispatch($httpMethod, $uri): リクエストをディスパッチするために使用されます。 $httpMethod は HTTP リクエスト メソッドを指し、$uri はリクエストされた URI です。
  • ハンドル 404/405: 要求されたルーティング ルールが存在しない場合、または HTTP リクエスト メソッドがサポートされていない場合は、404 Not found または 405 Method not allowed を返す必要があります。

次に、いくつかのルーティング ルールを定義し、ルーターに追加します。たとえば、次のようになります。

$router = new Router(
    FastRoutesimpleDispatcher(function(FastRouteRouteCollector $r) {
        $r->addRoute('GET', '/user/{id:d+}', 'UserController@show');
        $r->addRoute('POST', '/user/{id:d+}', 'UserController@update');
        $r->addRoute('DELETE', '/user/{id:d+}', 'UserController@delete');
        $r->addRoute('GET', '/about', 'AboutController@index');
    })
);
ログイン後にコピー

上の例では、4 つのルーティング ルールを定義しました。 1 つ目はユーザー情報を表示する GET リクエスト、2 つ目はユーザー情報を更新する POST リクエスト、3 つ目はユーザー情報を削除する DELETE リクエスト、最後の 1 つは About Us ページを表示する GET リクエストです。これらのルーティング ルールはすべて、動的ルーティングとパラメータ ({id:d} など) を使用しており、URL から変数を抽出して、処理のためにコントローラに渡すことができます。

次に、この Router クラスを使用して HTTP リクエストを処理できます。例:

$router->dispatch($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);
ログイン後にコピー

上記のコードでは、$_SERVER['REQUEST_METHOD'] と $_SERVER['REQUEST_URI'] を使用してリクエストの HTTP メソッドと URI を取得し、それらをディスパッチ メソッドに渡します。加工用です。リクエストの HTTP メソッドと URI に基づいて、ルーターは適切なコントローラーとハンドラーを呼び出してリクエストを処理します。

概要:

ルーティングは Web アプリケーションの重要なコンポーネントであり、アプリケーションがブラウザからのリクエストをどのように処理するかを決定します。 FastRoute は、RESTful ルーティング、動的ルーティング、パラメータ マッチング、正規表現ルーティングなどの多くの機能を提供する、高速で柔軟なルーティング ライブラリです。 PHP8.0 の FastRoute ライブラリを使用すると、ルーティング機能をより簡単に実装し、Web アプリケーションの効率と信頼性を向上させることができます。

以上がPHP8.0のルーティングライブラリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート