Php 当我刷新页面时,我的数组恢复到原始状态,单例不工作?
添加类别后,它不会保存我的更改。 如果我添加一个类别,它将显示在概述中,但如果我刷新,我将看到原始金额。 我猜我的单例设计中有一个错误,但我似乎找不到它Php 当我刷新页面时,我的数组恢复到原始状态,单例不工作?,php,singleton,Php,Singleton,添加类别后,它不会保存我的更改。 如果我添加一个类别,它将显示在概述中,但如果我刷新,我将看到原始金额。 我猜我的单例设计中有一个错误,但我似乎找不到它 class ProductService { private $_database; public function __construct($databaseType) { $databaseFactory = new DatabaseFactory(); $this->_databa
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中执行的每个请求都是无状态的 如果希望在请求之间持久化数据,则需要将数据放在某种形式的持久存储中,即会话、文件系统、数据库、内存等
Singleton模式仅确保为给定请求创建对象的单个副本,@user3704860如果您认为我的答案最有帮助,请不要忘记将我的答案标记为最佳答案。