考虑下面的代码,我已经被 Lynda.com 认为 要创建这样的数据库类,我的问题是为什么不创建 完全是数据库的静态方法而不是存储 实例到静态属性?
<?php
class Database {
private $conn;
private static $init;
public function __construct() {
$this->conn = new mysqli('localhost','root','root','mydb');
}
public static function getInstance() {
self::$init = new self();
return self::$init;
}
}
$db = Database::getInstance();
?>
最佳答案
如果你想使用单例,你应该保护 __construct()
class DB
{
private static $instance;
private function __construct($args)
{
// do some
}
public static function getInstance()
{
// get instance
}
}
$query = 'SELECT etc...';
$stmt = DB::getInstance()->prepare($query);
我在数据库类中使用这种模式。但如果您有超过 1 个连接,则不应这样做!使用单例。
关于php - 静态方法与静态实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548938/