php 单例模式封装mysql操作类
单例模式的必要条件(三私一公)
- 私有的成员属性--防止类外引入这个存放对象的属性
- 私有的构造方法--为了防止在类外使用new关键字实例化对象
- 私有的克隆方法--为了防止在类外通过clone生成另一个对象
- 公有的静态方法--为了让用户进行实例化对象的操作
上代码
class Model{
private $dbms='mysql';
private $dbhost='localhost';
private $dbname='mvcproject';
private $dbuser='root';
private $dbpass='root';
private $dbo;
private static $_instance;
private function __construct() {
echo 'aaa';
$dbdsn=$this->dbms.":host=".$this->dbhost.';dbname='.$this->dbname;
$dbh=new PDO($dbdsn,$this->dbuser,$this->dbpass);
$this->dbo=$dbh;
}
private function __clone(){}
public static function getInstance(){
if(!self::$_instance){
self::$_instance=new self;
}
return self::$_instance;
}
public function query($sql){
return $this->dbo->query($sql)->fetchAll();
}
}