当我刷新页面时,我的数组恢复原状,单身不工作?

时间:2015-05-12 19:16:11

标签: php singleton

添加类别后,它不会保存我的更改。 如果我添加一个类别,它会在概述中看到,但如果我刷新,我会看到原始数量。 我想我的Singleton设计有一个错误,但我似乎无法找到它。

class ProductService {

    private $_database;

    public function __construct($databaseType) {
        $databaseFactory = new DatabaseFactory();
        $this->_database = $databaseFactory->createDatabase($databaseType);
    }

    public function addCategory($category){
        $this->_database->addCategory($category);
    }

    public function getAllCategories() {
        return $this->_database->getAllCategories();
    }
}

class DatabaseFactory {

    public function __construct() {        
    }

    public function createDatabase($type){
        switch ($type) {
            case "Memory" : 
                return MemoryDatabase::getInstance();
        }
    }
}

class MemoryDatabase {

    private $categories;

    private function __construct() {
        $this->categories = array(
            new Category("Cheese"),
        );
    }

    public static function getInstance() {
        static $inst = null;
        if ($inst === null) {
            $inst = new MemoryDatabase();
        }
        return $inst;
    }

    private function __clone() {}

    private function __wakeup() {}

    public function addCategory($category) {
        array_push($this->categories, $category);
    }

    public function getAllCategories() {
        return $this->categories;
    }
}

1 个答案:

答案 0 :(得分:3)

您在PHP中执行的每个请求都是无状态的。

如果要在请求之间保留数据,则需要将数据放在某种形式的持久存储中,即会话,文件系统,数据库,内存等。

单例模式仅确保创建对象的单个副本,对于给定的请求确保