ThinkPHP5.1你一定要引起重视的几个细节

php编程 4个月前(2019-06-23 13:42) 晓峰哥 250 0

5.1正式发布以来,受到了很大的关注,针对用户的反馈意见,官方也及时发布了修正版本,目前最新版本为5.1.2,对于熟悉5.0版本的开发人员来说,其实掌握5.1还是一件很容易的事情,毕竟5.1版本的架构思想乃是由5.0改进而来,但如果下面的一些细节你不引起重视的话,仍然会不小心就踩坑了。

5.1正式发布以来,受到了很大的关注,针对用户的反馈意见,官方也及时发布了修正版本,目前最新版本为5.1.2,对于熟悉5.0版本的开发人员来说,其实掌握5.1还是一件很容易的事情,毕竟5.1版本的架构思想乃是由5.0改进而来,但如果下面的一些细节你不引起重视的话,仍然会不小心就踩坑了。
 

【系统】

* `5.0`很多核心类都直接提供了静态方法,但`5.1`版本这些核心类都改为动态方法,所以要像`5.0`那样使用静态方法调用的话,必须使用`Facade`(静态代理),否则可能会遇到静态方法不存在的错误;
* 如果你统一在最外层`config`目录下面用子目录的方式放置模块的配置文件,请确保模块目录不存在`config`目录,否则你会得不到预期;
* 配置文件`config.php`是无意义的(因为配置文件名就是一级配置名);
* 要获取一级配置的值,使用`Config`类的`pull`方法;
* 5.1是没有5.0的请求`Request`对象的方法注入功能的,如果你用了这个功能就需要自行调整了;
* 系统常量取消,大部分原有常量使用`Env`类的`get`方法获取;
 

【路由】

* 路由的目录已经独立为最外层的`route`目录,并且支持多个文件定义路由;
* 路由的批量注册功能请使用`rules`方法,`rule/get/post`这些路由注册方法是不支持批量注册的;
* `5.1`没有路由缓存指令了,因为支持采用延迟路由注册的机制,在应用配置中使用 `'url_lazy_route' => true`;
 

【控制器】

* 继承了`think\Controller`类的话,初始化方法从原来的`_initialize`方法更改为`initialize`;
 

【数据库和模型】

* 每次`Db`类的静态查询都是一次全新的查询,但每次查询之后的查询对象并不会销毁查询条件等数据;
* 如果使用了`JSON`查询语法,`user$.name` 需要改为 `user->name`;
* 数组批量查询语法调整(其实就是不建议使用);
* 模型主键如果不是`id`,**必须**设置`pk`属性;
* 软删除`trait`引入更改为 `think\model\concern\SoftDelete`;
 

【模板】

* `view_replace_str`配置已经取消了,如果需要模板替换功能,使用`tpl_replace_string`配置替代,并记得清空模板编译缓存;
* 模板标签输出的时候会默认加上安全过滤(默认为`htmlentities`,可配置),如果需要输出HTML内容,记得添加`|raw`;
* 系统分页的输出记得加上`|raw`(原因见上);
* `date`方法已经做了内部封装,无需再使用`###`变量替换了;
 

【其它】

* 如果你使用了环境变量设置调试模式的话,配置文件中的调试模式配置无效;
* `import`方法已经取消了(强烈建议使用命名空间及自动加载);
* 千万不要随便修改`application`目录名称,如果需要调整应用命名空间,可以设置`APP_NAMESPACE`环境变量,然后调整composer.json中的`"app\\": "application"`;
* 不要随便调整目录结构,除了日志、缓存等目录可配置之外;

[转自tp平台]

方法 配置 使用 如果 路由

分享到




评论列表(共条)

关于我(About Me)

美男子(晓峰哥)

欢迎来到我的世界,有你会更精彩^@^

在这个纷繁的世界里,放下而又拿起,是多么的不容易.