$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以匹配旧版本的版本。我不知道如何处理这些警告而无需重新安装,我肯定不会我想在每个页面上看到那些已弃用的东西。谢谢。
答案 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;