我正在尝试存储要在后端传递的文件信息,所以我创建了一个带有静态数组的单例类和访问该数组的静态方法。
然而,当涉及到检索数据时,我只得到一个空数组。我在哪里错了?
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);
}
}
答案 0 :(得分:2)
首先,这不是单身,而是静态类。 Singleton假设创建一个类的实例。
在您的代码中,我看到storeTempFileData
向静态变量附加了一个值,但getTempFileData
没有返回相同的值 - 它返回一个数组。
还有一个问题 - 在您取消设置self::$_tempFileData
之后,它不再是一个数组了。因此self::$_tempFileData[] = $data;
会触发通知。
基本上我认为您需要将self::$_tempFileData[] = $data;
更改为self::$_tempFileData = $data;
。