一、关于控制器
打开默认控制器:/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
中的字母都会被转换成小写字母!
网友评论