本章我们先体验下什么是路由,以及路由带来的好处。
首先,我们先了解一下URL
请求的执行流程:
那么,问题来了,为什么不能把路由注册的语句写在控制器的方法中呢?
我们通过实际案例来看看原因:
1、首先创建一个自定义配置文件:/config/config.php
,当然啦,前提别忘了在入口文件中定义一下自定义配置文件目录:
define('CONF_PATH', __DIR__ . '/../config/');
要想使用路由,就必须要确保已经配置了启用url路由
,所以我们需要在自定义配置文件:/config/config.php
中添加启动url路由
的配置:
<?php
return [
// 是否开启路由
'url_route_on' => true,
];
?>
2、创建一个/application/edu/controller/Test.php
文件,写上代码:
<?php
namespace app\edu\controller;
class Test
{
public function demo1()
{
return 'I am Peter';
}
}
3、浏览器中使用PATH_INFO
格式去访问:http://tp5.com/edu/test/demo1
,成功了。
但是url
略长,并且一眼就看出来哪些是模块哪些是控制器,从安全性的角度上来讲,是不行的,所以我们要使用路由。
4、在自定义配置文件夹下创建一个/config/route.php
文件,写入路由规则:
<?php
think\Route::rule('demo1','edu/test/demo1');
?>
再在浏览器地址栏中输入:http://tp5.com/edu/test/demo1
,就会提示
这时候就要使用路由配置后的
url
:http://tp5.com/demo1
才能正常访问。
现在来回答前面的提问,为什么不能将路由写到控制器中:
如果将路由写到控制器中,那么当url
请求已经执行到了控制器的时候,其实你真实的url
地址早就暴露了,还要路由规则干嘛?
路由规则其实是在应用级层面上就应该要配置的。
如果没有自定义配置文件,则一般路由规则是写在/application/route.php
文件下的,如果自定义了配置文件,就写在/config/route.php
文件里。