添加类别后,它不会保存我的更改。 如果我添加一个类别,它会在概述中看到,但如果我刷新,我会看到原始数量。 我想我的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;
}
}
答案 0 :(得分:3)
您在PHP中执行的每个请求都是无状态的。
如果要在请求之间保留数据,则需要将数据放在某种形式的持久存储中,即会话,文件系统,数据库,内存等。
单例模式仅确保创建对象的单个副本,对于给定的请求确保。