ThinkPhp は一般的に使用される PHP フレームワークであり、ルーティングは Web アプリケーションの構築の重要な部分です。この記事では、ThinkPhp ルーティングの基本概念、その使用方法、および読者が ThinkPhp ルーティングをより深く理解し、適用できるようにするいくつかの実践的なヒントを紹介します。
1. ThinkPhp ルーティングの基本概念
ルーティングは、HTTP リクエストをハンドラーにマッピングするプロセスです。従来の MVC アーキテクチャでは、ルーティングが重要な役割を果たします。ルーティングは、アドレスとアプリケーション間のマッピングとして理解でき、クライアントから要求されたアドレスは、対応するコントローラー メソッドにルーティングされ、対応するコンテンツが出力されます。
ThinkPhp のルーティングは主にコントローラー (Controller)、操作メソッド (Action)、パラメーター (Param) の 3 つの部分で構成されます。
1. コントローラー: コントローラーは、リクエストのルーティングを指定し、コントローラー クラスを表す最初の層です。コントローラーの役割は、Web リクエストを受信し、リクエストを処理し、3 番目のパラメーターである Action (操作メソッド) を返すことです。
2. 操作メソッド (Action): 各コントローラーには操作メソッドがあり、コントローラーはリクエストを受信すると、そのリクエストを操作メソッドに渡して処理し、結果を返します。
3. パラメータ (Param): パラメータは、同じコントローラ内の操作メソッドの異なる動作を区別するために使用されるフラグです。たとえば、パラメーターを使用して、特定の ID 番号を持つユーザーのクエリとすべてのユーザー情報のクエリという 2 つの異なる操作を区別できます。
ThinkPhp では、ルートは URL アクセスを通じて定義されます。 URLには上記3つの部分の情報が含まれています。
例:
http://www.example.com/index.php/index.php/controller/action/param1/value1/param2/value2
このうち、index.php
は単一のエントリファイルを表し、controller
はコントローラを表し、action
は操作メソッドを表し、 param
はパラメータを示し、value
は対応するパラメータの値を示します。
2. ThinkPhp ルーティングの使用方法
次に、ThinkPhp ルーティングの使用方法を紹介します:
1. 基本ルーティング
アプリケーション内のすべてのルートは、デフォルトでは、特定のコントローラーとメソッドにマップされます。たとえば、リクエスト URL は /index.php/index/index
で、これは Index クラスの Index メソッドにマップされます。
2. 静的ルーティング
静的ルーティングとは、URL にパラメーターが含まれないタイプのルートを指します。このタイプのルートでは、ある種の正規表現を使用して URL を照合できます。静的ルートは、URL を指定されたコントローラーおよびメソッドにマップし、実行中に変更されません。
例:
use think\facade\Route; Route::get('blog/:id','index/blog/read');
上記のコードは、Index のブログ コントローラーの読み取りメソッドにルーティングする静的ルートを定義します。実際には、リクエストは /index として一致します。 .php /blog/4
の URL。4 はパラメータ ID の値です。
3.動的ルーティング
動的ルーティングとは、パラメータを含むルートを指します。たとえば、現在のユーザーのプロフィール ページを取得したい場合は、次のルートを使用できます:
use think\facade\Route; Route::rule('user/:id', 'index/user/index');
このルートは、URL にユーザー ID を含むパラメーターを定義します (例: /index)。 .php/user/ 123
、123 はパラメータ ID の値としてユーザー コントローラーのインデックス メソッドに渡されます。
4. 通常ルーティング
通常ルーティングは、ルールに従ってリクエスト URL と一致するルートです。リクエスト URL の一部をチェックして照合し、ルールで定義された照合結果に基づいて特定のコントローラーとアクション メソッドにマッピングできます。
たとえば、次のルートは、/index.php/test/123
など、URL に数字が含まれるリクエストに一致します。 URL 内の数字を文字に置き換えると、一致するものはなくなります。
use think\facade\Route; Route::rule('^test/(\d+)$', 'Test/index/:1');
上記のルートは、リクエスト URL に数値を含む URL と一致し、その数値をコントローラーの最初のパラメーターとして使用します。たとえば、リクエスト URL は /index.php/test/123
で、これはテスト コントローラーのインデックス メソッドにマップされ、最初のパラメーターとして 123 が使用されます。
5. グループ ルーティング
パケット ルーティングとは、ルートをいくつかの部分に分割し、各部分で異なるコントローラーのルートを定義することを指します。グループ ルーティングを使用すると、ルーティング構成が簡素化され、コードの可読性が向上します。
たとえば、グループ ルーティングを使用して、無制限のルートを定義することもできます。
use think\facade\Route; Route::group('', function () { Route::rule('index', 'index/index/index'); Route::rule('user', 'index/user/index'); Route::rule('company', 'index/company/index'); });
上記では、異なるコントローラにマッピングされる 3 つのルートを定義します。
3. ThinkPhp ルーティングの実践的なヒント
1. カスタム ルーティング ルール
Route::rule() を通じて独自の URL ルーティング ルールを定義できます。たとえば、デフォルトのコントローラと操作メソッドをオーバーライドするには、次のコードを使用します。
use think\facade\Route; Route::rule('admin/:controller/:action', 'admin/:controller/:action')->middleware('CheckLogin');
上記のコードは、従業員のバックグラウンド アクセス用のコントローラを定義しており、各コントローラのアクションは CheckLogin ミドルウェアによって検証される必要があります。
2. ルートを動的に生成する
同じコントローラーまたは操作メソッドにルーティングする必要がある複数のルートがある場合、動的ルーティングを通じてそれらを定義できます。これにより、大文字と小文字を区別するルートごとに個別のリクエスト パラメーターを定義する必要がなくなります。
たとえば、次のコードを使用してルートを動的に生成できます。
use think\facade\Route; $router = Route::group('home', function(){ Route::rule('news/:id','index/news/detail')->pattern(['id' => '\d+']); Route::rule('jobs/:year/:month/:day/:id', 'index/jobs/detail') ->pattern(['year' => '\d+', 'month' => '\d+', 'day' => '\d+', 'id' => '\d+']); Route::rule('products','index/products/index'); });
上記のコードは、さまざまな配信方法のルートをインデックス コントローラーの特定の操作メソッドにポイントし、通常の動的パラメータと一致する式。
3. ルート分散
アプリケーションに複数の異なるサブアプリケーションがある場合、分散ルーティングを使用してリクエストをさまざまなサブアプリケーションに分散できます。
たとえば、次のコードを使用してルート配布を実装できます:
use think\facade\Route; Route::group('app', function () { Route::rule('blog/:year/:month/:day/:name', 'blog/detail'); Route::rule('profile', 'user/profile'); Route::rule('account/login', 'user/login'); }); Route::miss('home/index/missed');
其中,miss方法用来定义路由未匹配时执行的逻辑。
四、结语
本文介绍了ThinkPhp路由的基本概念、使用方法以及一些实用技巧。掌握了路由的概念和使用方法,可以让开发者更加高效地开发Web应用程序。
以上がThinkPhp ルーティングの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。