1.URL访问
可以看到,无论是URL访问还是命令行访问,都采用PATH_INFO访问地址,其中PATH_INFO的分隔符是可以设置的。注意:5.0取消了URL模式的概念,并且普通模式的URL访问不再支持,但参数可以支持普通方式传值。
即原来的普通模式http://localhost/?m=home&c=user&a=login&var=value(用参数传递来指定模块控制器方法)和兼容模式http://localhost/?s=/home/user/login/var/value(用唯一参数传递模块控制器方法和参数)都废除了。剩下的pathinfo模式和重写模式都可以使用,而且更美观。
2.Traits引入
Trait 是PHP5.4引入的一个新特性。通过两行语句(PHP5.5以上只需第二句)就可以引入指定文件里的方法。感觉和接口差不多,但是trait是有方法体的,所以突出了复用性,接口突出的是多态。讲真我比较喜欢trait,所以看到TP5有这个特性也是眼前一亮。
load_trait('controller/Jump'); // 引入traits\controller\Jump
use \traits\controller\Jump;
3.路由定义
TP5的路由的变化真的太大了...TP3的时候路由还是默认路由(模块控制器方法 对应就是 相应的路由),TP5就变成了可以配置成任何字符的路由,虽然比之前繁琐了一些,但是这样使得路由定义更强大了,BTW感觉有点像Lavarel。
// 注册路由到index模块的News控制器的read操作
Route::rule('new/:id','index/index/read');
除了rule方法,还有get,post,delete方法之类,反正真的挺强大的。
4.控制器 前置操作
protected $beforeActionList = [
'first',
'second' => ['except'=>'hello'],
'three' => ['only'=>'hello,data'],
];
这个新功能也是让我眼前一亮的,因为在实际开发中应该会频繁用到,比如登录Session验证就需要在每个方法开头进行,不然用户没登录就可以执行功能。代码分别表示全部方法都前置执行first,除了hello其他方法都前置执行second,只有hello和data方法前置执行three。
5.I方法变成了一大串的函数
// 获取当前请求的name变量
Request::instance()->param('name');// 获取当前请求的所有变量(经过过滤)
Request::instance()->param();// 获取当前请求的所有变量(原始数据)
Request::instance()->param(false);// 获取当前请求的所有变量(包含上传文件)
Request::instance()->param(true);
本来获取post过来的id只需I(‘post.id’)或者I(‘id’)就可以,现在要写Request::instance()->param('id');这一串东西....还要use Think\Request;麻烦了好多...本来用I方法就是因为方便,比起$_POST()要少写很多,现在这个方法真的太麻烦了...
ThinkPHP5.0 取消了用于判断请求类型的系统常量(如IS_GET,IS_POST等),统一采用 think\Request类 处理请求类型。
IS_GET == Request::instance()->isGet()
IS_POST == Request::instance()->isPost()
嗯也是变长变麻烦了...
在看TP5的时候还稍微用了一下,印象深刻的居然是错误提示...比之前版本的提示好看而且也详细多了。
BTW,希望TP越来越强大!
如有错误,恳请指点。_(:з」∠)_,谢谢观看。
参考:ThinkPHP5.0完全开发手册(http://www.kancloud.cn/manual/thinkphp5)
来源:oschina
链接:https://my.oschina.net/u/2366098/blog/751195