关于php:记录一次yii2项目php版本升级到74的代码变更

5次阅读

共计 859 个字符,预计需要花费 3 分钟才能阅读完成。

目前开发用的 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 告诉。
因而在拜访一个可能为空的数组时要先判断数组非空

正文完
 0