📜  route codeigniter - PHP (1)

📅  最后修改于: 2023-12-03 15:04:55.926000             🧑  作者: Mango

CodeIgniter 中的路由

在 CodeIgniter 中,路由是指将 URL 映射到特定的控制器和方法的过程,是 MVC 架构中的一部分。路由的实现有助于构建面向对象的程序设计。本文将介绍 CodeIgniter 中的路由。

基本概念

在 CodeIgniter 中,路由的配置文件在 application/config/routes.php 中。该配置文件允许您自定义路由规则,将 URL 进行重写、将参数传递给控制器方法等。

控制器和方法

控制器是指处理请求的类,在 CodeIgniter 中,所有的控制器都存储在 application/controllers 目录下。例如,application/controllers/Welcome.php 是一个名为 Welcome 的控制器。每个控制器都是一个类,控制器中的方法是类中的一个函数。

URL

URL(统一资源定位符)用于定位资源(例如 Web 页面、CSS 文件、图像等),通常由计算机网络中使用的方案传输协议(如 HTTP、FTP)和资源的名称或地址组成。在网站开发中,URL 通常用于表示客户端需要访问的页面或资源。

路由规则

CodeIgniter 中的路由规则支持正则表达式,可用于匹配包含参数的 URL,并将这些参数传递给控制器或方法。

基本路由规则

路由规则语法如下:

$route['url'] = 'controller/method';

其中,url 是 URL,controller/method 是将处理该 URL 的控制器和方法。比如,将 URL /home 映射到 Home 控制器的 index 方法,可以使用以下语法:

$route['home'] = 'Home/index';
参数传递

为了将参数传递给控制器或方法,使用 (:num) 表示数字参数,使用 (:any) 表示字符串参数。例如:

$route['product/(:num)'] = 'catalog/product_lookup_by_id/$1';

该路由规则将 URL /product/123 映射到 catalog 控制器的 product_lookup_by_id 方法,并将 123 作为方法参数传递。

正则表达式

路由规则中可以使用 PHP 正则表达式进行高级匹配。例如:

$route['product/([a-z]+)'] = 'catalog/product_lookup_by_name/$1';

该路由规则将 URL /product/red-shoes 映射到 catalog 控制器的 product_lookup_by_name 方法,并将 red-shoes 作为方法参数传递。

总结

路由是 web 开发中不可或缺的概念之一,CodeIgniter 的路由功能为处理复杂 URL 提供了便利。在开发过程中,我们可以灵活使用路由功能,根据业务需求实现自定义路由规则。

参考链接: