从单个类PHP

时间:2015-04-27 14:42:55

标签: php static singleton

我正在尝试存储要在后端传递的文件信息,所以我创建了一个带有静态数组的单例类和访问该数组的静态方法。

然而,当涉及到检索数据时,我只得到一个空数组。我在哪里错了?

class FileStore {

private static $_tempFileData = array();
private static $initialized = false;

private function __construct() {}

private static function initialize() {
    if (self::$initialized)
        return;
    self::$initialized = true;
}

public static function storeTempFileData($data) {
    self::initialize();
    self::$_tempFileData[] = $data;
}

public static function getTempFileData() {
    self::initialize();
    return self::$_tempFileData;
}

public static function clearTempFileData() {
    self::initialize();
    unset(self::$_tempFileData);
}
}

1 个答案:

答案 0 :(得分:2)

首先,这不是单身,而是静态类。 Singleton假设创建一个类的实例。

在您的代码中,我看到storeTempFileData向静态变量附加了一个值,但getTempFileData没有返回相同的值 - 它返回一个数组。

还有一个问题 - 在您取消设置self::$_tempFileData之后,它不再是一个数组了。因此self::$_tempFileData[] = $data;会触发通知。

基本上我认为您需要将self::$_tempFileData[] = $data;更改为self::$_tempFileData = $data;