我对OOP非常陌生,但我有一个类,在创建了每个对象之后,我将它们推入数组中(我认为没有方法来迭代类中的每个对象)。我的客户还在PHP4上,所以我遇到了一些麻烦。
由于版本4没有附带__construct方法,所以我创建了自己的:
function construct() {
global $LIST;
array_push($LIST, &$this);
}没有&之前的$this,它只是将一个空对象添加到数组中,因为在实例化之后,我会更改每个对象的一些属性。不过,现在它给了我一个警告:
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of array_push(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file.
我试着压制这个警告,但是在array_push()前面的一个@不起作用。显然,除非在我的根文件中,否则error_reporting(0)将无法工作(所有这些内容都在包含在许多页面上的内容中)。我也无法访问php.ini文件。
发布于 2013-10-28 20:18:32
我发现很难相信它只与&$this一起工作,因为错误消息声明它是通过值aka传递对象,无论怎样,它都是$this。
另外,类声明中的global?坏的。霍里巴德。你为什么不做下面的事情呢?
$LIST[] = new MyObject();如果PHP4是如此过时以致于$arr[]语法仍然无效,那么:
array_push($LIST, new MyObject());还有,上帝。PHP4?升级它。我是认真的。我认为您不可能想出一个正当的理由在这个时候仍然使用PHP4。
https://stackoverflow.com/questions/19643862
复制相似问题