<?php
class db
{
//使用一个静态变量记录db对象初始化时为null
public static $db = null;
/* 私有构造函数是类无法完成外部的调用
* 意味着您将无法使用 $xx = new db();
*/
private function __construct(){
echo '连接数据库....';
}
/*
* 使用静态方法去获取数据对象
* 获取时先判断db对象是否已经存在,如果存在则直接返回db对象反正则创建这个对象
*/
public static function getInstance(){
if(self::$db == null){
self::$db = new db();
}
return self::$db;
}
public function query($sql){
echo '执行sql命令';
}
public function __destruct(){
echo '关闭数据库连接....';
}
}
$db = db::getInstance();
$db1 = db::getInstance();
$db->query('test');
$db2 = db::getInstance();
//输出 : 连接数据库....执行sql命令关闭数据库连接....
//可以看到不论我们获取多少次db对象,虽然他们名称不同,但都代表着同一个对象!这样就实现单例模式!