Skip to content
Go back

ThinkPHP 笔记(路由实现与操作方法)

Published:  at  04:25 PM

前段时间一直在学习ThinkPHP,不过比较忙没有同步博客,今天发表一下。

路由文件

生成一个控制器文件

控制器文件命名规范,大写字母开头的驼峰命名。

浏览器访问控制器(sql.php)

ThinkPHP的控制器操作方法支持不同的响应输出,对于不同的响应输出会调用不同的Response子类 ,例如‘json’,‘xml’等,可以直接return一个数组或者对象数据,然后交给‘Response’对象。还有一种情况是,你可以统一使用系统提供的钩子输出进行额外的处理,而如果你使用了‘echo’直接输出,将无法享受这些功能特性。

更简短的url

路由定义前URL:tp5.io/index/Sql

路由定义后URL:tp5.io/Sql

添加操作方法

操作方法命名规范,小写字母开头的驼峰命名。
如果定义路由并且没有开启强制开路由的话,那么系统会根据下面的默认规则解析URL

对于操作方法的必要参数,我们使用了方法的参数定义。对于方法的参数,通常包含两种类型:对象类型和普通类型。所有的参数都是来自于当前的请求,对象类型参数比较特殊一些,通常是通过依赖注入自动完成。

在ThinkPHP中URL中属于pathinfo地址,这个地址的的解析过程是由框架内部实现的,并且会自动解析成一个URL变量(但却不是GET变量,证据就是你用原生的‘$_GET[‘id’]’是获取不到‘id’的值的),一个真正的GET变量应该是下面的请求URL。

这个时候id变量才是一个真正的‘$_GET’变量,因为我们可以通过原生的‘$_GET[‘id’]获取到‘id’值。 不过框架封装看一个‘param’变量,可以让你不管当前的请求类型是‘GET’还是‘POST’,都能无差别的统一获取当前的请求变量。
所以,上面两种URL地址,我们都可以统一使用‘input(‘id’)’(这是一个助手函数,其实是调用‘Request’对象的‘param’方法)来获取当前请求的‘id’变量,当然‘$_GET’和’$_POST’ ThinkPHP定义操作名时不能用‘php’关键词,如果php版本低于5.6+,如果你担心你的应用可能存在此类问题,那么可以尝试使用方法后缀功能,代价就是你在定义方法的时候可能要多写几个字符了。

也是就说每个操作方法名都要加‘Action’的后缀,不过访问操作名的时候‘不需要加Action’
如果使用的是‘PHP7.0+’版本的话,基本不用担心这个问题,但可能会受到来自IDE自动格式化的困惑。


Suggest Changes

Previous Post
第一次校招复试总结
Next Post
第一次校招面试总结