此代码的设计模式是什么?
class Foo {
private $_connection;
private static $_instance;
private $_host = "Host";
private $_username = "Name";
private $_password = "encrypted Word";
private $_database = "Name";
public static function getInstance() {
if(self::$_instance = 'Connected') {
self::$_instance = new self();
}
return self::$_instance;
}
private function __construct() {
$this->_connection = new mysqli($this->_host, $this->_username,
$this->_password, $this->_database);
}
public function getConnection() {
return $this->_connection;
}
}
答案 0 :(得分:0)
这可能是一个单例,但目前存在错误,无法按预期工作。
单例的目的是,只有一个类的实例,而不能创建另一个实例。为此,创建了一个静态方法(getInstance
),该方法存储该类的实例并延迟实例化它。
当前有一个错误
if (self::$instance = 'Contected') ...
首先,这不是一个比较,因此,该值始终为true,每次调用getInstance
时,实际上是创建一个新值,而不是返回单例。
应更改为
if (!self::$instance) ...
要获取实际的单例,只需调用getInstance
方法。
$foo = Foo::getInstance();