本章我們先體驗(yàn)下什么是路由,以及路由帶來(lái)的好處。
首先,我們先了解一下URL請(qǐng)求的執(zhí)行流程:



那么,問(wèn)題來(lái)了,為什么不能把路由注冊(cè)的語(yǔ)句寫在控制器的方法中呢?
我們通過(guò)實(shí)際案例來(lái)看看原因:
1、首先創(chuàng)建一個(gè)自定義配置文件:/config/config.php,當(dāng)然啦,前提別忘了在入口文件中定義一下自定義配置文件目錄:
define('CONF_PATH', __DIR__ . '/../config/');
要想使用路由,就必須要確保已經(jīng)配置了啟用url路由,所以我們需要在自定義配置文件:/config/config.php中添加啟動(dòng)url路由的配置:
<?php
return [
// 是否開啟路由
'url_route_on' => true,
];
?>
2、創(chuàng)建一個(gè)/application/edu/controller/Test.php文件,寫上代碼:
<?php
namespace app\edu\controller;
class Test
{
public function demo1()
{
return 'I am Peter';
}
}
3、瀏覽器中使用PATH_INFO格式去訪問(wèn):http://tp5.com/edu/test/demo1,成功了。
但是url略長(zhǎng),并且一眼就看出來(lái)哪些是模塊哪些是控制器,從安全性的角度上來(lái)講,是不行的,所以我們要使用路由。
4、在自定義配置文件夾下創(chuàng)建一個(gè)/config/route.php文件,寫入路由規(guī)則:
<?php
think\Route::rule('demo1','edu/test/demo1');
?>
再在瀏覽器地址欄中輸入:http://tp5.com/edu/test/demo1,就會(huì)提示

這時(shí)候就要使用路由配置后的
url:http://tp5.com/demo1才能正常訪問(wèn)。
現(xiàn)在來(lái)回答前面的提問(wèn),為什么不能將路由寫到控制器中:
如果將路由寫到控制器中,那么當(dāng)url請(qǐng)求已經(jīng)執(zhí)行到了控制器的時(shí)候,其實(shí)你真實(shí)的url地址早就暴露了,還要路由規(guī)則干嘛?
路由規(guī)則其實(shí)是在應(yīng)用級(jí)層面上就應(yīng)該要配置的。
如果沒(méi)有自定義配置文件,則一般路由規(guī)則是寫在/application/route.php文件下的,如果自定義了配置文件,就寫在/config/route.php文件里。