【发布时间】:2023-03-13 03:28:02
【问题描述】:
尝试使用单例的数据库连接。 __constructor 是私有的并且从静态函数返回实例。
class MyDbConn
{
protected $_conn;
protected $database;
protected $user;
protected $password;
protected $host = "localhost";
private static $instance;
private function __construct()
{
$this->db_conn = new PDO("mysql:host=$this->host;dbname=$this->database",$this->user,$this->password);
$this->db_conn->exec("set names utf8");
$this->_conn = $this->db_conn;
}
public static function returnInstance() {
if(self::$instance == null)
{
print "Object created!";
self::$instance = new self;
}
return self::$instance;
}
public function returnconnection(){
return $this->_connection;
}
}
现在我可以从 MyDbConn::returnInstance()->returnconnection() 访问连接实例;
但是, 如何将我的用户详细信息和数据库名称传递给此构造函数?我不能做 ::returnInstance($username,$password) 或 returnconnection($username,$password)。
请有任何想法。
【问题讨论】:
-
避免使用单例模式slideshare.net/go_oh/…
-
@CodingInsane,如果使用得当,我真的不认为单例不好。如果您不希望为一个类创建多个对象(实例),我相信,没有比单例更好的选择了。就我而言,我需要限制 dbconnection 实例,因此您的评论无济于事。
-
我不明白你为什么不直接使用
Dependency Injection -
@CodingInsane,依赖注入是个好主意,但根据我的预算和应用程序的性质,这将是“太多事情要做”。所以我正在尝试单身。但我总是对依赖注入印象深刻。
标签: php pdo parameters singleton