在实例化时将每个新PHP对象存储在数组中

时间:2013-10-28 19:52:55

标签: php oop object php4

我对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文件。

1 个答案:

答案 0 :(得分:1)

我发现很难相信它只适用于&$this,因为错误消息表明它正在按值传递对象[aka,as $this]。

此外,类声明中的global?坏。 Horribad。你为什么不这样做呢?

$LIST[] = new MyObject();

如果PHP4过于陈旧且$arr[]语法尚未生​​效,那么:

array_push($LIST, new MyObject());

另外,圣洁的神。 PHP4?升级它。认真。我认为你不可能在这一点上提出仍然使用PHP4的正当理由。