我对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文件。
答案 0 :(得分:1)
我发现很难相信它只适用于&$this
,因为错误消息表明它正在按值传递对象[aka,as $this
]。
此外,类声明中的global
?坏。 Horribad。你为什么不这样做呢?
$LIST[] = new MyObject();
如果PHP4过于陈旧且$arr[]
语法尚未生效,那么:
array_push($LIST, new MyObject());
另外,圣洁的神。 PHP4?升级它。认真。我认为你不可能在这一点上提出仍然使用PHP4的正当理由。