【问题标题】:Assigning return value of new by reference is deprecated in PHP 5.3通过引用分配新的返回值在 PHP 5.3 中已弃用
【发布时间】:2011-07-16 10:32:11
【问题描述】:

我的网站在这一行有一个已弃用的错误:

$obj =& new $class($table,$primkeyArr,$this);

因为&。它给出了这个错误:

Deprecated: Assigning the return value of new by reference is deprecated in ....

这是 php 5.3 中的一个问题。

如果我从这一行中删除 &,错误就会消失。但是我不知道如果我将我的网站放在 PHP 版本较低(5.2)的服务器上是否会导致任何问题。

在 PHP 5.2 和 PHP 5.3 中删除 & 是否正常?

【问题讨论】:

标签: php migration deprecated


【解决方案1】:

在 PHP 5 中,默认情况下以类似引用的方式处理对象。所以删除& 可能不会改变任何东西。

但由于引用分配会破坏旧引用,there might still be a difference

【讨论】:

    【解决方案2】:

    不建议返回引用但不将其反映在您的函数或方法签名中。名称前以及分配返回值时必须有 &。

    public function &getValue() 
    {
      return $this->value;
    }
    
    ...
    
    $myValue = &$obj->getValue();
    

    manual 会告诉您更多信息。

    【讨论】:

      【解决方案3】:

      http://php.net/manual/en/language.references.pass.php

      这只是一个警告。你并不真的需要它,但简短的回答是它只会引发警告。根据您的 php 配置中的 error_handling 级别,将取决于您是否在其他 5.3 系统上看到它。

      【讨论】:

        猜你喜欢
        • 2011-06-08
        • 2011-07-18
        • 1970-01-01
        • 2010-11-08
        • 2023-03-19
        相关资源
        最近更新 更多