单例模式的主要作用是保证在面向对象编程设计中,一个类只能有一个实例对象存在(一个类只有一个实例对象).比如建立目录,数据库连接都有可能会用到这种技术.可以节省空间内存,它限制了实例对象的个数.
<?php
class DB{
private static $obj = null;
private function __construct(){
echo "数据库连接成功";
}
static function getInstance(){
if(is_null(self::$obj))
self::$obj = new self();
return self::$obj;
}
function query($sql){
echo $sql;
}
}
$db = DB::getInstance();
$db->query("select * from user");
?>
要实现一个类只能实例化一个对象,就先要让一个类不能实例化对象,因为上述构造函数封装了是私有的外部不可以访问,所以不能实例化对象,只能在内部实例化.静态方法不能访问非静态的成员,所以属性也是一个静态属性,