我眼里的THINKPHP5新亮点(1)

1.URL访问php

能够看到,不管是URL访问仍是命令行访问,都采用PATH_INFO访问地址,其中PATH_INFO的分隔符是能够设置的。注意:5.0取消了URL模式的概念,而且普通模式的URL访问再也不支持,但参数能够支持普通方式传值。thinkphp

即原来的普通模式http://localhost/?m=home&c=user&a=login&var=value(用参数传递来指定模块控制器方法)和兼容模式http://localhost/?s=/home/user/login/var/value(用惟一参数传递模块控制器方法和参数)都废除了。剩下的pathinfo模式和重写模式均可以使用,并且更美观。函数

 

2.Traits引入thinkphp5

Trait 是PHP5.4引入的一个新特性。经过两行语句(PHP5.5以上只需第二句)就能够引入指定文件里的方法。感受和接口差很少,可是trait是有方法体的,因此突出了复用性,接口突出的是多态。讲真我比较喜欢trait,因此看到TP5有这个特性也是眼前一亮。post

load_trait('controller/Jump');  // 引入traits\controller\Jump
use \traits\controller\Jump;

 

3.路由定义spa

TP5的路由的变化真的太大了...TP3的时候路由仍是默认路由(模块控制器方法 对应就是 相应的路由),TP5就变成了能够配置成任何字符的路由,虽然比以前繁琐了一些,可是这样使得路由定义更强大了,BTW感受有点像Lavarel。命令行

// 注册路由到index模块的News控制器的read操做
Route::rule('new/:id','index/index/read');

除了rule方法,还有get,post,delete方法之类,反正真的挺强大的。code

 

4.控制器 前置操做接口

protected $beforeActionList = [

        'first',

        'second' =>  ['except'=>'hello'],

        'three'  =>  ['only'=>'hello,data'],

    ];

这个新功能也是让我眼前一亮的,由于在实际开发中应该会频繁用到,好比登陆Session验证就须要在每一个方法开头进行,否则用户没登陆就能够执行功能。代码分别表示所有方法都前置执行first,除了hello其余方法都前置执行second,只有hello和data方法前置执行three。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)

相关文章
相关标签/搜索