0

我对 OOP 很陌生,但是我有一个类,并且在创建每个对象后,我将它们推入一个数组中(我认为没有办法遍历类中的每个对象)。我的客户端仍在 PHP4 上,所以我遇到了一些麻烦。

由于版本 4 没有 __construct 方法,我自己做了:

function construct() {
    global $LIST;
    array_push($LIST, &$this);
}

没有&before $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 文件。

4

1 回答 1

1

我很难相信它只适用&$this于错误消息指出它通过值传递对象 [aka, as $this] 反正。

此外,global在类声明中?坏的。可怕的。您为什么不执行以下操作?

$LIST[] = new MyObject();

如果 PHP4 过于陈旧以至于$arr[]语法还无效,那么:

array_push($LIST, new MyObject());

还有,圣神。PHP4?升级它。严重地。我不认为你可能想出一个正当的理由在这一点上仍然使用 PHP4。

于 2013-10-28T20:18:32.547 回答