php - 从单例类 PHP 中检索数据

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

最佳答案

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

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

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

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

关于php - 从单例类 PHP 中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29898886/

相关文章:

java - 如何在生产代码中考虑单例?

c# - 静态字段初始化器

.net - Ninject 单例初始化

php - 模型类的 codeigniter 实例

php - Cakephp 表单必须提交两次才能工作

c++ - 使用序列优雅地初始化静态(成员)数组

php - 在 PHP 中扩展静态类 - 避免在扩展类中共享多个类的变量

design-patterns - 单例继承

PHP:识别 Windows 上的连接点 (PHP5/Apache 2.4)

php - Bootstrap 列在 Wordpress 上发生冲突