【发布时间】:2013-11-07 18:15:04
【问题描述】:
我对 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 文件。
【问题讨论】:
-
首先,为什么?!?!如果必须,可以构建一个简单的注册表类吗?另外,在 PHP4 中,与类同名的函数会被自动调用为构造函数。
-
@AbraCadaver 为什么我要将所有对象存储在一个数组中?每个对象都是我客户网站上的一个产品,某些页面需要列出他们的所有产品。
-
所以您构建了对象来表示特定产品,而应用程序唯一知道哪些产品可用的时候是您手动实例化它们时?我在这里闻到了严重的设计缺陷。