目前开发用的 yii2 基于 php7.1.33 构建,鉴于 7.1 曾经进行保护,打算更新 php 版本到 7.4,并且将 yii2 的版本从 2.0.15.1 降级到最新的 2.0.43。
此文记录一下批改步骤
object 批改
谬误提醒:
PHP Compile Error
Cannot use yii\base\Object as Object because 'Object' is a special class name
谬误起因:
php7.2 开始不反对应用 object 作为类名,因而将所有继承至 \yii\base\Object
的 Object 批改为\yii\base\Object
controller 批改
谬误提醒:
Yii2 Call to a member function validateCsrfToken() on string
谬误起因:
自 yii2.0.36 开始,
yii2 退出了一个类变量 $request,在 init 函数中初始化,因而如果重写 controller 的 init 办法,必须执行 parent::init()。
花括号批改
谬误提醒:
PHP Deprecated Warning
Array and string offset access syntax with curly braces is deprecated
谬误起因:
应用大括号拜访数组及字符串索引的形式在 php7.4 中已被废除。请应用 $var[$idx] 的语法来代替 $var{$idx}。
例:php 7.4 不再容许应用花括号来拜访数组的元素。
$arr = array('1','2','3'); // 定义一个数组:echo $arr[0]; // 正确
echo $arr{0}; //7.4 以前正确,7.4 谬误
数组非空批改
谬误提醒:
Notice: Trying to access array offset on value of type null
谬误起因:
php7.4 不反对以数组模式拜访非数组
尝试以数组形式拜访 null,bool,int,float 或 resource(例如 $null[“key”])将会抛出 notice 告诉。
因而在拜访一个可能为空的数组时要先判断数组非空