【问题标题】:Retrieving data from a singleton class PHP从单例类 PHP 中检索数据
【发布时间】:2015-04-27 14:42:54
【问题描述】:

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

但是,在检索数据时,我只得到一个空数组。我哪里错了?

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

【问题讨论】:

标签: php static singleton


【解决方案1】:

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

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

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

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

【讨论】:

  • 第一次清除后正确,它将不再起作用
  • 好的,如果我只想访问那个静态数组,添加元素并检索数组,这怎么可能?
  • 所以您确实希望它返回一个数组,而不是您在storeTempFileData 中设置的数组?好的,在这种情况下,将unset(self::$_tempFileData); 更改为self::$_tempFileData) = array()。除此之外,代码似乎是正确的。请提供您使用此类的示例代码,但它不能按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多