美文网首页
28、TP5控制器入门知识

28、TP5控制器入门知识

作者: IUVO | 来源:发表于2018-06-02 21:57 被阅读58次
一、关于控制器

打开默认控制器:/application/index/controller/Index.php,这个控制器类的名字是Index,所对应的控制器的文件名也叫Index.php,它里面有一个index()方法,是默认方法。
一个完整的访问url应该是:http://tp5.com/index.php/index/index/index
域名/入口文件/模块/控制器/方法

什么是可访问的控制器呢?
凡是可以通过url访问的控制器,都叫做可访问控制器,通常我们所说的控制器都是可访问控制器。

在哪里设置可访问控制器呢?
打开框架的惯例配置文件:/thinkphp/convention.php,有一个"默认的访问控制器层"配置项,值为controller,意思是application下各个模块的controller目录下的文件皆为可访问控制器。
如果将其值修改为con,那么,所有的application目录下的controller目录都要修改成con才能正常访问,记住,命名空间里的controller也要改哦。

二、关于操作

默认控制器:/application/index/controller/Index.php的默认方法index()实际上就是可访问的操作。
index控制器中写上demo()方法:

public function demo()
{
    return '我是index模块index控制器中的demo方法';
}

我们可以正常访问到这个方法:http://tp5.com/index.php/index/index/demo
这个demo()方法就叫做可访问的方法,它的访问限定符必须是public,如果它的访问限定符改为private或者protected,就不能被外部访问了。

三、关于命名空间

在TP5中,命名空间可以确保类名和第三方类名不冲突,只要不在同一个命名空间即可。
声明命名空间很简单:namespace app\index\controller;,这样写即可。
当存在命名空间的时候,那么这个类就不再是单纯的一个类名了,而是:类名=根空间+子空间(可选)+类名
例如namespace app\index\controller;中的app就是根命名空间,TP5内置了3个根命名空间:

app 对应 /application目录,
think 对应 /thinkphp/library/think目录,
traits 对应 /thinkphp/library/traits目录

至于类名后缀:
如果我们使用的控制器的类名和关键字冲突了,那么就需要用到控制器后缀,即TP3的风格。
1、例如要创建Public类,因为和关键字冲突了,需要命名为:PublicController
2、配置惯例文件下的controller_suffix配置项修改为true,即允许控制器类后缀。
3、这样就可以直接访问public控制器而不用添加Controller关键字了,因为默认是带上它来解析的。

至于操作后缀:
相同的,如果方法名和关键字冲突了,也可以使用后缀,比如使用list()方法就和系统关键字冲突了,那么如何添加后缀呢?
1、配置惯例文件下的action_suffix配置项修改为Action,即设置操作方法的后缀。
2、同样的,在访问listAction()操作时是不用添加Action后缀了,因为默认是带上它来解析的,按照list()方法名去访问即可。

四、控制器命名规范

驼峰法命名是不需要再多说了,但是如果控制器类名中有两个以上单词组成,例如:/application/index/controller/UserLogin.php文件,那么,在url访问中,如何去写呢?

切记,不能用http://tp5.com/index.php/index/userlogin/index这种方式去访问,因为不规范!,需要用http://tp5.com/index.php/index/user_login/index才规范。

url会自动转换控制器和操作名,这也是个配置,在惯例配置文件中可以找到:url_convert

另外注意在TP5中,所有url中的字母都会被转换成小写字母!

相关文章

网友评论

      本文标题:28、TP5控制器入门知识

      本文链接:https://www.haomeiwen.com/subject/gsmrsftx.html