驼峰命名
控制器类名的规范是驼峰法(并且首字母大写),不过URL的访问地址并非如此,假设定义了一个HelloWorld控制器如下:
~~~
<?php
namespace app\index\controller;
class HelloWorld
{
public function index()
{
return 'hello,world';
}
}
~~~
实际的URL访问并非是下面的
~~~
http://tp5.com/index/HelloWorld/index
~~~
实际会被系统解析成Helloworld控制器类而不是HelloWorld控制器类(虽然只是大小写的区别但按照PSR-4自动加载规范无法自动加载,因此会报Helloworld控制器类不存在的错误)。
正确的URL访问应该是
~~~
http://tp5.com/index/hello_world/index
~~~
> 注意:hello_world并不会自动对应hello_world控制器(因为不符合控制器类的命名规范),仍然会自动对应HelloWorld控制器类。原因就是框架的URL自动转换功能,由于系统的URL自动转换功能,ThinkPHP5的URL地址默认是不区分大小写的(也就是说都会强制转换成小写)。但事情没有绝对,我们可以设置关闭URL自动转换:
~~~
'url_convert' => false,
~~~
一旦关闭url_convert自动转换,就意味着URL地址中的控制器名不会自动转换,必须严格使用实际的控制器名(区分大小写)。
这个时候,你就可以通过
~~~
http://tp5.com/index/HelloWorld/index
~~~
正常访问HelloWorld控制器了^_^