我们说路由
的作用相当于现实社会中的邮差
,起的是数据转发
的作用。现实的邮差是转发的信件,而计算机世界中的路由,转发的是2进制数据。
在ThinkPHP中,确切的说,路由的作用是将特定的URL请求分发到特定的触发器上。有人说,这不是MCA应该做的事吗?的确,在没有路由以前,这就是MCA的事情,但如果有了路由,则会使MCA失效。
ThinkPHP的路由有两种模式:一种是混合模式(默认),它的意思是说,如果当前URL找不到相关的路由,就去按MCA进行数据转发。
另一种是强制模块,它的意思是说,如果当前URL找不到相关路由,就会抛出异常而中断程序执行。
2.路由到操作方法:跳过router.php
3.路由到方法尽量不要用
4.路由到闭包函数
5.路由到重定向地址
开启路由
config.php
有一行,负责路由的开启。'url_route_on' => true,
,没错,默认路由的状态是开启的。
所以在这,我们在只启用混合路由模式的情况下,不需要对配置信息做任何更改。
配置路由
负责路由的配置文件为app/route.php
路由规则里有变量就叫动态路由规则,没有就叫静态路由规则
解释:地址栏中输入demo/lesson.shtml
路由规则可以通过两种方式配置:第一种为上图所示;
第二种可以通过数组方式配置(两种方式):如下图所示
1中路由地址比较复杂,2中只有一个路由地址
开启trace
在config.php中找到'app_trace' => false,
修改为:'app_trace' => true,
保存。
我们可以利用日志写入的功能,来查看一些变量的值。这样做的是好处是:我们写完测试变量的代码后,并不需要删除他们。因为他们的信息只会被打印至控制台中。用户并看不到他们。
下面,我们在教师管理的index 触发器中,利用trace()
助手函数在控制台中打印信息以测试。
public function index()
{
// 获取查询信息
$name = Request::instance()->get('name');
$pageSize = 5; // 每页显示5条数据
// 实例化Teacher
$Teacher = new Teacher;
// 打印$Teacher 至控制台
trace($Teacher, 'debug');
更改类型为:Console
config.php
'trace' => [
// 内置Html Console 支持扩展
'type' => 'Console',
],
总结:chrome与输出类型console的组合是我们更愿意看到的结果。
在实际的项目开发中,我们也是这样做的。抛出异常的同时,进行日志记录,这样当出现错误时,我们一是可以通过查看日志文件来定位错误的发生位置及原因;二是,可以在config.php中打开trace,然后在生产环境下通过控制台来快速查看错误发生的位置信息。