return19931112 2019-06-18 17:55:37 7080次浏览 4条回复 1 3 0

Yii Framework 3.0 升级指南

这个文件包含Yii 3.0的升级说明。 当您将Yii从一个版本升级到另一个版本时,可能会破坏您的应用程序。 虽然我们尽可能地确保向后兼容性(BC),但是有时还是无法避免的。 升级到Yii 3.0可能需要对应用程序和扩展程序进行重大更改,这些更改是可以接受的,并且只需要“重构”,而不是“重写”。 所有的“是的,它是”很酷的东西和Yii的灵魂都保留下来了。

变更概要:

Tip: 升级复杂软件项目的依赖关系肯定会带来破坏某些模块的风险,所以一定要备份好项目代码,你无论如何都需要备份 ;)

升级之后,你需要检查你的应用是否正常工作,是否有测试异常。 从一个版本升级到另一个版本时要考虑哪些更改,请参阅下面的说明。

Note: 升级说明是迭代的。也就是说,如果你想从版本A升级到版本C,但是有版本B在A和C之间,你需要按照说明来操作A和B。

从 Yii 2.0.x 升级

  • PHP版本最低需要7.1。请确保你的代码能够及时更新。
  • 放弃 memcache 扩展。 使用 memcached 来代替。
  • 移除 Configurable,也从 BaseObject 中移除 init() 方法
    • 不再支持 __construct(array $config = [])
  • Yii 助手函数完全重写, 同时不再提供任何全局变量:
    • use Yii 变更成 use yii\helpers\Yii
    • 不再支持 Yii::$app:
      • 推荐使用构造函数DI容器过去应用实例和服务
      • 使用 Yii::get('service') 替代 Yii::$app->getService()
      • 如果其他方法都失败了,可以使用 Yii::getApp()
    • 别名变更成为 Aliases 服务:
      • 推荐使用如下方法获取别名:
        • DI容器获取 aliases 服务,或者
        • $this->app->getAlias()
      • 推荐通过配置定义别名
    • 新增并使用 Application::t()
      • 推荐使用 $this->app->t() 而不是 Yii::t()
    • 移除 Yii::configure()
      • 如果其他方法都失败了,可以使用 yii\di\AbstractContainer::configure()
    • Yii::$container 变更成为私有变量:
      • 无法直接使用
      • 通过DI隐式使用容器
    • 入口文件不再需要require Yii
    • 通过 Yii::setContainer() 来使用 Yii 的特性
      • 因为它可以访问日志、分析以及国际化等组件
      • Yii中的方法会拥有更加通用的行为
      • 查看 推荐使用的入口文件
    • 移除 Yii::$loggerYii::$profiler, 使用DI代替
    • 常量的定义移动到 config/defines.php
      • YII_DEBUG 默认为 YII_ENV_DEV
      • YII2_PATH 重命名为 YII_PATH
    • getObjectVars() 移动到 ArrayHelper

未完待续...

觉得很赞
您需要登录后才可以回复。登录 | 立即注册