目前开发用的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
的方法修改为使用\yii\base\BaseObject
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 通知。
在访问一个可能为空的数组时要先判断数组非空
$arr = array(); //定义一个数组:
if($arr[0]){echo $arr[0];} //7.4以前正确,7.4提示
if(!empty($arr)&&$arr[0]){echo $arr[0];} //正确
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。