ThinkPHP路由详解_php技巧
有了基本配置,我们就可以来访问我们的应用默认首页了。进入到项目目录,可以直接使用PHP内置服务器来开始访问,比如:
php -S localhost:8999
浏览器输入localhost:8999就可以看到ThinkPHP的默认首页了:一个笑脸。
在这里,我们访问到的是ThinkPHP自带的默认入口文件index.php也就是访问到的是IndexController的index()方法,这是因为ThinkPHP默认设置:
'DEFAULT_CONTROLLER' => 'Index'
如果你查看过ThinkPHP/Conf/convention.php文件,应该就会明白这个其实就是设置默认的控制器。
关于控制器(Controller)我们后面会仔细说
了解这些基本知识之后,那么如果我们需要访问其它的页面,访问其他的控制器和方法呢?答案就在本节的路由教程中。
路由定义规则
在使用路由之前,确保你的URL支持PATH_INFO(或者兼容URL模式也可以,采用普通URL模式的情况下不支持路由功能)并且确认已开启一下的路由设置:
'URL_ROUTER_ON' => true
这里涉及到两个设置项,PATH_INFO和URL_ROUTER_ON,这些在ThinkPHP/Conf/convention.php文件都可以找到。
在满足以上两个条件之后,就可以配置路由规则了。在配置文件中使用URL_ROUTE_RULES参数进行配置,配置格式是一个数组,其格式为: '路由表达式'=>'路由地址和传入参数'每个元素都代表一个路由规则,比如:
'URL_ROUTE_RULES'=>array( 'blogs/:year/:month/:day' => array('Index/archive', 'status=1'), 'blogs/:id' => 'Index/read', ),
ThinkPHP按定义的顺序依次匹配路由规则,一旦匹配到的话,就会定位到路由定义中的控制器和操作方法去执行(你可以传入其他的参数),而后面的规则不会继续匹配
以上的路由配置说明:在每个路由表达式中,:后面跟参数名称,比如上面的:year,:month,:id都是参数名称,以:id为例,它指向Index控制器的read方法,这个方法接受一个$id的参数:
public function read($id){ echo "read page with" .$id; }
在浏览器输入http://localhost:8999/index.php/Home/blogs/2就可以看到
read page with 2
Home就代表Home模块,你可以简单地将它映射到相应的Home目录,这是由于在默认的配置中
'DEFAULT_MODULE' => 'Home'
你可以根据自己的需求修改,但本课依旧采用默认的Home模块.
如果你还需要传人额外的参数,像第一条的规则array('Index/archive', 'status=1')中的status一样传人,你看设置多个这样的参数。
如果你尝试在浏览器输入:
http://localhost:8999/index.php/Home/blogs/string
ThinkPHP也给我们返回了string,但在日常的开发中,我们通常需要限制:id变量是整数,那该怎么做呢?只需要稍稍改动就可以了,写成
'blogs/:id\d' => 'Index/read',
以上\d表示限制变量id只能是数字。
对于可选参数,可以用[]包含表示,比如:
'blogs/:year/:month/[:day]' => array('Index/archive', 'status=1'),
上面的day现在就是可选参数了,你可以传人,也可以不传。
在ThinkPHP中,还支持在限制路由的后缀和使用正则路由。
限制路由后缀,通常使用在平时常见的html,htm等后缀,还是以上面的规则为例:
'blogs/:id' => array('Index/read',array('ext'=>'html'))
你就可以限制这条规则只能在.html的路由后缀生效。
正则路由
正则本身就是一门很大的学问,在学习ThinkPHP的正则路由之前,最好是具备一定的正则表达式的基础。
路由表达式支持的正则定义必须以/开头,否则就视为规则表达式,比如:
'#^blog\/(\d+)$#' => 'Index/read'
这会解析为规则路由而不是正则路由,因为录音表达式并没有以/开始,所以,我们需要这样写:
'/^new\/(\d{4})\/(\d{2})$/' => 'Index/achive?year=:1&month=:2',
以上就是一条正确的正则路由。对于正则表达式中的每个正则规则子模式)部分(如d{4}和d{2}),如果需要在后面的路由地址中引用,可以采用:1、:2这样的方式,序号就是子模式的序号
静态路由
ThinkPHP框架其实还有一个路由机制叫静态路由,这实际上就是规则路由的静态简化版,路由定义中不包含动态参数(如上面的路由规则中id参数),静态路由不需要遍历路由规则而是直接定位,因此执行效率会较高。静态路由采用URL_MAP_RULES来定义规则:
'URL_ROUTER_ON' => true, 'URL_MAP_RULES'=>array( 'new/top' => 'Index/top?type=top' )
由于Index/top?type=top中Index表示控制器,第一个top表示方法,所以我们需要在Index控制器中创建top方法:
public function top(){ echo "top page </br>"; }
根据上面这条规则,如果我们访问到
http://localhost:8999/index.php/Home/new/top
其实我们访问的是:
http://localhost:8999/index.php/Home/index/top/type/top
转译成就是new/top对应的是index控制器的top方法,传人的参数为type,参数值为top,所以就有了index/top/type/top
但是,当我们访问http://localhost:8999/index.php/Home/new/top/var/test尽管URL地址前面也有new/top,然而由于静态路由是完整匹配的性质,所以不会匹配到index/top/type/top
以上所述就是本文的全部内容了,希望大家能够喜欢。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

執行 ThinkPHP 專案需要:安裝 Composer;使用 Composer 建立專案;進入專案目錄,執行 php bin/console serve;造訪 http://localhost:8000 查看歡迎頁面。

ThinkPHP 擁有多個版本,針對不同 PHP 版本而設計。主要版本包括 3.2、5.0、5.1 和 6.0,而次要版本用於修復 bug 和提供新功能。目前最新穩定版本為 ThinkPHP 6.0.16。在選擇版本時,需考慮 PHP 版本、功能需求和社群支援。建議使用最新穩定版本以獲得最佳性能和支援。

ThinkPHP Framework 的本機運作步驟:下載並解壓縮 ThinkPHP Framework 到本機目錄。建立虛擬主機(可選),指向 ThinkPHP 根目錄。配置資料庫連線參數。啟動 Web 伺服器。初始化 ThinkPHP 應用程式。存取 ThinkPHP 應用程式 URL 運行。

Laravel 和 ThinkPHP 框架的效能比較:ThinkPHP 效能通常優於 Laravel,專注於最佳化和快取。 Laravel 性能良好,但對於複雜應用程序,ThinkPHP 可能更適合。

ThinkPHP 安裝步驟:準備 PHP、Composer、MySQL 環境。使用 Composer 建立專案。安裝 ThinkPHP 框架及相依性。配置資料庫連線。產生應用程式碼。啟動應用程式並造訪 http://localhost:8000。

ThinkPHP 是一款高效能的 PHP 框架,具備快取機制、程式碼最佳化、平行處理和資料庫最佳化等優勢。官方性能測試顯示,它每秒可處理超過 10,000 個請求,實際應用中被廣泛用於京東商城、攜程網等大型網站和企業系統。

ApacheCamel是一個基於企業服務匯流排(ESB)的整合框架,它可以輕鬆地將不同的應用程式、服務和資料來源整合在一起,從而實現複雜的業務流程自動化。 ApacheCamel使用基於路由的設定方式,可以輕鬆定義和管理整合流程。 ApacheCamel的主要特點包括:靈活性:ApacheCamel可以輕鬆地與各種應用程式、服務和資料來源整合。它支援多種協議,包括Http、JMS、SOAP、FTP等。高效性:ApacheCamel非常高效,它可以處理大量的訊息。它使用非同步訊息傳遞機制,可以提高效能。可擴

開發建議:如何利用ThinkPHP框架進行API開發隨著網際網路的不斷發展,API(ApplicationProgrammingInterface)的重要性也日益凸顯。 API是不同應用程式之間進行通訊的橋樑,它可以實現資料共享、功能呼叫等操作,為開發者提供了相對簡單且快速的開發方式。而ThinkPHP框架作為一款優秀的PHP開發框架,具有高效能、可擴展且易用
