将php代码从5.4迁移到PHP7

将php代码从5.4迁移到PHP7,php,version,smarty,upgrade,core,Php,Version,Smarty,Upgrade,Core,目前,我正在使用PHP5.4,并希望转到7或7.2。在服务器PHP7.2上运行我的代码时,它会抛出语法错误,意外的“new”(T_new)。它取决于使用&运算符指定的类 我在整个项目中使用了这种代码。不可能删除所有功能 $instance=&new Configure() 我可以在PHP7.2下运行我的项目而不删除赋值操作符吗 由于PHP5,new会自动返回一个引用,因此在此上下文中使用=&是不推荐的,在PHP5.3及更高版本中会生成一条E_不推荐的消息,在早期版本中会生成一条E_STRICT消

目前,我正在使用PHP5.4,并希望转到7或7.2。在服务器PHP7.2上运行我的代码时,它会抛出语法错误,意外的“new”(T_new)。它取决于使用&运算符指定的类

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

$instance=&new Configure()

我可以在PHP7.2下运行我的项目而不删除赋值操作符吗

由于PHP5,new会自动返回一个引用,因此在此上下文中使用=&是不推荐的,在PHP5.3及更高版本中会生成一条E_不推荐的消息,在早期版本中会生成一条E_STRICT消息。从PHP7.0开始,它在语法上是无效的


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

我从来没有看到一个
=&
挨着一个。。这在5.4中起了什么作用?在我的5.6旅行中没有看到,这看起来很奇怪。您正在创建一个新实例并尝试将其存储为引用吗?是的,就是@magnus。这是一年前用PHP5.4完成的&现在我需要在PHP7.2下运行它。但是,为什么要在执行
新建
时创建引用呢?我可能遗漏了一些东西,但看不出它的目的是什么?在PHP5.3中,这个特性实际上已经被弃用了。然后在7.0中删除了它(即使是5.0也会抛出一条关于它的“严格标准”信息)。您没有看到任何关于它的信息的原因可能是您的错误报告级别没有包括弃用警告。这里有一个(选中“eol版本”框以包括较旧的PHP版本)。一个好主意是在开发时将error_reporting设置为E_,以捕获类似的内容。