<?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对象,虽然他们名称不同,但都代表着同一个对象!这样就实现单例模式!