Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从单例类PHP检索数据_Php_Static_Singleton - Fatal编程技术网

从单例类PHP检索数据

从单例类PHP检索数据,php,static,singleton,Php,Static,Singleton,我试图存储要在后端传递的文件信息,所以我创建了一个带有静态数组和访问数组的静态方法的单例类 然而,在检索数据时,我只得到一个空数组。我哪里出了问题 class FileStore { private static $_tempFileData = array(); private static $initialized = false; private function __construct() {} private static function initialize() {

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

然而,在检索数据时,我只得到一个空数组。我哪里出了问题

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);
}
}

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

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

还有一个问题-在取消设置
self::$\u tempFileData
后,它不再是数组。所以
self:$\u tempFileData[]=$data将触发通知


基本上,我认为您需要更改
self::$\u tempFileData[]=$data
self:$\u tempFileData=$data

你能将代码粘贴到存储数组的位置并获取它吗?第一次清除后,Singleton看起来是正确的,它不会再工作了。好吧,如果我只想访问静态数组,添加元素并检索数组,这怎么可能呢?所以您确实希望它返回一个数组,而不是您在
storeTempFileData
中设置的数组?好,在本例中,更改
unset(self:$\u tempFileData)
self:$\u tempFileData)=array()
。除此之外,代码似乎是正确的。请提供示例代码,说明您在何处使用该类,但该类无法按预期工作。