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

When I refresh the page my array is back to original, singleton not working?

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

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

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

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

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