单例模式的意义在于,很多时候不需要创建重复的实例。
用PHP实现单例模式的原理是,使用一个静态变量存储实例,当遇到重复的“new”操作时,直接返回静态变量中存储的实例。
典型的应用有数据库类,请看代码:
这样就用单例模式实现了一个数据库类,使用下面的代码可以检测:
query();$db2 = DB::getInstance();//证明它们是同一个实例 echo $db === $db2;?>
我们使用了DB::getInstance()来获取实例,因为构造方法被设置成私有,不能直接用new DB()来创建实例。
理由是,只要使用new会重复创建实例。而是用getInstance()会将第一次创建的实例存放在静态变量里,重复利用。
不管使用多少次getInstance()方法,在同一个页面中始终只有一个实例存在,这就是我们想要的结果~
PHP手册中说,如果两个对象有相同的属性和方法,那么下面的语句成立:
$db1 == $db2;
如果两个对象是同一个,那么下面的语句成立:
$db1 === $db2;