将 php 代码从 5.4 迁移到 php 7

Posted

技术标签:

【中文标题】将 php 代码从 5.4 迁移到 php 7【英文标题】:Migrate php codes from 5.4 to php 7 【发布时间】:2020-01-14 10:09:40 【问题描述】:

目前,我正在使用 php 5.4,并希望迁移到 7 或 7.2。在服务器 php 7.2 上运行我的代码时,它会抛出语法错误,即意外的“新”(T_NEW)。它取决于带有 & 运算符的分配类。

我在整个项目中使用了这种代码。它不可能删除所有功能。

$instance =& 新配置();

我可以在不删除分配运算符的情况下在 php 7.2 下运行我的项目吗?

【问题讨论】:

我从来没有见过一个=& 并排在一起.. 那在 5.4 中做了什么?在我的 5.6 旅行中没有看到它 这看起来很奇怪。您是否正在创建一个新实例并尝试将其存储为参考? 是的,完全是@magnus。这是在一年前用 php 5.4 完成的,现在我需要在 php 7.2 下运行它。 但是当你在做new 的时候为什么要创建一个引用呢?我可能遗漏了一些东西,但看不到目的? 该功能实际上在 PHP 5.3 中已被弃用。然后它在 7.0 中被删除(甚至 5.0 都会抛出关于它的“严格标准”消息)。您没有看到任何相关内容的原因可能是您的 error_reporting-level 不包含弃用警告。这是demo(选中“eol 版本”框以包含较旧的 PHP 版本)。一个好主意是在开发时将 error_reporting 设置为 E_ALL 以捕获此类内容。 【参考方案1】:

从 PHP 5 开始,new 自动返回一个引用,因此在这种情况下使用 =& 已被弃用,并在 PHP 5.3 及更高版本中生成 E_DEPRECATED 消息,在早期版本中生成 E_STRICT 消息。自 PHP 7.0 起,它在语法上无效。

PHP references

所以你必须改变你的代码。

【讨论】:

以上是关于将 php 代码从 5.4 迁移到 php 7的主要内容,如果未能解决你的问题,请参考以下文章

PHP 5.4 到 7.4 mssql 到 sqlsrv sql 查询未运行

PHP 5.4:禁用警告“从空值创建默认对象”

从使用 Blowfish 和 ECB 的 mcrypt 迁移到 OpenSSL

在 xampp 中从 5.6 迁移 PHP 7 时,PDO 驱动程序在 Windows 中没有价值

php artisan migrate 不适用于 Laravel 5.4 中的 XAMPP

PHP从mysql *迁移到mysqli [重复]