我眼里的THINKPHP5新亮点(1)

你。 提交于 2019-12-09 10:19:50

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)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!