新的运算符和引用错误

时间:2012-03-16 05:55:04

标签: php reference

 $class_name = 'MDB2_Statement_'.$this->phptype;
        $statement = null;
        $obj =& new $class_name($this, $statement, $positions, $query, $types, $result_types, $is_manip, $limit, $offset);

上面的代码已经过时了,我想把它改成像

这样的东西
$class_name='MDB2_Statement_'.$this->phptype;
...
$obj_=new class_name($this, $statement, $positions, $query, $types, $result_types, $is_manip, $limit, $offset);
$obj=&$obj_;

但这不会导致正确的行为。有人能给我一个解决方法吗?

[更新] 如果我保留旧代码,我会在每个加载的视图页面中遇到一些“已弃用的警告”

  

不推荐使用:通过引用分配new的返回值是   在C:\ xampp \ htdocs ... \ APPLI \ php \ library \ PEAR \ MDB2.php中弃用   第391行

例如。

我打开那个文件并希望以某种方式编辑它(我不知道),以便Deprecated消失。目前唯一的解决方案是重新安装包含适当PHP版本的XAMPP以匹配旧版本的版本。我不知道如何处理这些警告而无需重新安装,我肯定不会我想在每个页面上看到那些已弃用的东西。谢谢。

3 个答案:

答案 0 :(得分:4)

PHP唯一抱怨的是:

$obj =& new $class_name...
      ^

您不再需要也不应该使用通过引用分配,因为对象总是在PHP 5中引用。只需删除&,就是这样。

答案 1 :(得分:0)

您可以使用这种方式在php 5.3.10中创建对象的引用。

$firstObj = new something();
$referenceObj = &$firstObj;

答案 2 :(得分:0)

为什么甚至将参考运算符与对象一起使用? 对象放在内存中,绑定到它的所有变量都会改变它的内存。

换句话说

$a1 = new stdClass;
$a2 = $a1;

会产生与以下相同的影响:

$a1 = 1000;
$a2 = &$a1;