ThinkPhp est un framework PHP couramment utilisé et le routage est une partie importante de la création d'applications Web. Cet article présentera les concepts de base du routage ThinkPhp, comment l'utiliser et quelques conseils pratiques pour aider les lecteurs à mieux comprendre et appliquer le routage ThinkPhp.
1. Concepts de base du routage ThinkPhp
Le routage est le processus de mappage des requêtes HTTP aux gestionnaires. Dans l'architecture MVC traditionnelle, le routage joue un rôle essentiel. Nous pouvons comprendre le routage comme un mappage entre une adresse et une application. L'adresse demandée par le client sera acheminée vers la méthode du contrôleur correspondante, puis le contenu correspondant sera généré.
Le routage ThinkPhp se compose principalement de trois parties : le contrôleur (Controller), la méthode de fonctionnement (Action) et le paramètre (Param).
1. Contrôleur : Le contrôleur est la première couche qui spécifie le routage des requêtes et représente une classe de contrôleur. La fonction du contrôleur est de recevoir des requêtes Web, de traiter les requêtes et de renvoyer le troisième paramètre, Action (méthode de fonctionnement).
2. Méthode d'action (Action) : chaque contrôleur contient une méthode d'action. Une fois que le contrôleur a reçu la demande, il transmet la demande à la méthode d'action pour traitement et renvoie le résultat.
3. Paramètre (Param) : Les paramètres sont des indicateurs utilisés pour distinguer différents comportements des méthodes de fonctionnement au sein du même contrôleur. Par exemple, nous pouvons utiliser des paramètres pour distinguer deux opérations différentes : interroger les utilisateurs avec un certain numéro d'identification et interroger toutes les informations utilisateur.
Dans ThinkPhp, les itinéraires sont définis par l'accès URL. L'URL contient les informations des trois parties ci-dessus.
Par exemple :
http://www.example.com/index.php/index.php/controller/action/param1/value1/param2/value2
http://www.example.com/index.php/index.php/controller/action/param1/value1/param2/value2
其中,index.php
表示单一入口文件,controller
表示控制器,action
表示操作方法,param
表示参数,value
表示对应参数的值。
二、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的blog控制器的read方法,实际上它将匹配请求为/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的值传递给user控制器的index方法。
4.正则路由
正则路由是按规则匹配请求URL的路由。它可以检查并匹配请求URL的部分内容,并根据规则定义的匹配结果来映射到特定的控制器和操作方法上。
例如,下面的路由将匹配URL中包含数字的请求,例如/index.php/test/123
。如果将URL中的数字替换为字母,则不会匹配。
use think\facade\Route; Route::rule('^test/(\d+)$', 'Test/index/:1');
上面的路由将匹配请求URL中包含数字的URL,并将数字作为控制器的第一个参数使用。例如,请求URL为/index.php/test/123
index .php
représente un fichier d'entrée unique, controller
représente le contrôleur, action
représente la méthode de fonctionnement, param
représente le paramètre, et value
représente la valeur du paramètre correspondant. 2. Comment utiliser le routage ThinkPhpCe qui suit présente comment utiliser le routage ThinkPhp :1 Routage de baseToutes les routes de l'application seront mappées à un contrôleur et une méthode spécifiques par défaut. Par exemple, l'URL de la requête est /index.php/index/index
, qui sera mappée à la méthode d'indexation de la classe Index. 2. Routage statique Le routage statique fait référence à un type de route qui ne contient pas de paramètres dans l'URL. Ce type de route peut utiliser une sorte d'expression régulière pour faire correspondre les URL. Les routes statiques mappent les URL aux contrôleurs et méthodes spécifiés et ne changent pas pendant l'exécution. Par exemple :
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'); });Le code ci-dessus définit une route statique, qui sera acheminée vers la méthode de lecture du contrôleur de blog d'Index. En fait, elle correspondra à la requête comme
/index.php/blog/4code> URL, où 4 est la valeur du paramètre id. <p></p>3. Routage dynamique <p></p>Le routage dynamique fait référence à un itinéraire qui contient des paramètres. Par exemple, si nous voulons obtenir la page de profil de l'utilisateur actuel, nous pouvons utiliser la route suivante : <p></p>
<pre class="brush:php;toolbar:false">use think\facade\Route;
Route::rule('admin/:controller/:action', 'admin/:controller/:action')->middleware('CheckLogin');</pre>Cette route définit les paramètres qui contiennent l'identifiant de l'utilisateur dans l'URL, par exemple : <code>/index.php/user/ 123
, où 123 sera transmis à la méthode d'index du contrôleur utilisateur comme valeur du paramètre id. 4. Routage régulierLe routage régulier est un itinéraire qui correspond à l'URL de la demande selon des règles. Il peut vérifier et faire correspondre une partie de l'URL de la requête, et la mapper à des contrôleurs et méthodes d'action spécifiques en fonction des résultats de correspondance définis par les règles. Par exemple, l'itinéraire suivant correspondra aux requêtes qui contiennent des chiffres dans l'URL, telles que /index.php/test/123
. Si vous remplacez les chiffres de l'URL par des lettres, il n'y aura aucune correspondance.
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'); });L'itinéraire ci-dessus correspondra aux URL qui contiennent un numéro dans l'URL de la requête et utilisera le numéro comme premier paramètre du contrôleur. Par exemple, l'URL de la requête est
/index.php/test/123
, qui sera mappée à la méthode d'index du contrôleur de test et utilisera 123 comme premier paramètre. 🎜🎜5. Routage de groupe🎜🎜Le routage de paquets consiste à diviser l'itinéraire en plusieurs parties et à définir l'itinéraire de différents contrôleurs dans chaque partie. L'utilisation du routage de groupe simplifie la configuration du routage tout en augmentant la lisibilité du code. 🎜🎜Par exemple, le routage de groupe peut également être utilisé pour définir des itinéraires illimités : 🎜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');🎜Ce qui précède définit 3 itinéraires, qui sont mappés à différents contrôleurs. 🎜🎜3. Conseils pratiques pour le routage ThinkPhp🎜🎜1. Règles de routage personnalisées🎜🎜Vous pouvez définir vos propres règles de routage d'URL via Route::rule(). Par exemple, utilisez le code suivant pour remplacer le contrôleur et la méthode de fonctionnement par défaut : 🎜rrreee🎜Le code ci-dessus définit le contrôleur comme accès des employés en arrière-plan, et les actions de chaque contrôleur doivent être vérifiées par le middleware CheckLogin. 🎜🎜2. Générer dynamiquement des itinéraires🎜🎜Lorsque vous avez plusieurs itinéraires qui doivent être acheminés vers le même contrôleur ou la même méthode d'action, vous pouvez les définir via le routage dynamique. Cela élimine le besoin de définir des paramètres de requête distincts pour chaque itinéraire sensible à la casse. 🎜🎜Par exemple, vous pouvez utiliser le code suivant pour générer dynamiquement des itinéraires : 🎜rrreee🎜Le code ci-dessus pointe les itinéraires des différentes méthodes de livraison vers une certaine méthode de fonctionnement dans le contrôleur d'index et utilise des expressions régulières pour faire correspondre les paramètres dynamiques. 🎜🎜3. Distribution des routes🎜🎜S'il existe plusieurs sous-applications différentes dans votre application, vous pouvez utiliser le routage de distribution pour distribuer les demandes à différentes sous-applications. 🎜🎜Par exemple, la distribution des itinéraires peut être implémentée en utilisant le code suivant : 🎜
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应用程序。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!