#### 控制器后缀
为什么会有控制器后缀的概念呢?有两个原因,首先是如果控制器类不带后缀,容易产生和关键字冲突的情况,例如无法使用public控制器,其次,控制器类和模型类容易产生混淆,例如User控制器类和User模型类,默认不使用控制器后缀,要使用的话开启下面的参数:
~~~
// 控制器类后缀
'controller_suffix' => true,
~~~
controller_suffix参数配置的是布尔值,而不是具体的控制器后缀,开启后,会自动使用`url_controller_layer`配置值作为访问控制器后缀,这个参数默认值是controller,所以再次访问
~~~
http://tp5.com/index/index/hello
~~~
的时候,指向的访问控制器为:
~~~
application/index/controller/IndexController.php
~~~
控制器类定义修改如下:
~~~
<?php
namespace app\index\controller;
class IndexController
{
public function hello()
{
return 'hello,world';
}
}
~~~
注意:开启了控制器类后缀的话,类名和类文件名依然要保持大小写一致。
开启了控制器类后缀的好处是控制器类的命名不受任何关键字约束,例如我们可以定义一个`public`控制器类用于继承,
~~~
<?php
namespace app\index\controller;
class PublicController
{
public function base()
{
return 'base';
}
}
~~~
开启了控制器类后缀,并不会影响当前的控制器名称的获取,当前访问的控制器名称还是Public而不是PublicController,要注意控制器名和控制器类名的区别。