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

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"
  • 不要随便调整目录结构,除了日志、缓存等目录可配置之外;

你可能感兴趣的:(ThinkPHP5.1你一定要引起重视的几个细节)