单例模式顾名思义:
这个类只能实例化一次.不能被克隆.一般被用来处理数据库操作等需要频繁使用,但是多次实例化又很浪费内存的类.
下面是一个带有注释的实例:
<?php
#单例模式
######################
class Single{
private static $instance; #定义私有静态属性,用来存放本类实例化后的对象.
private function __construct(){} #私有构造方法,防止new实例化操作.
public static function getInstance()
{
if(!(self::$instance instanceof self))
#instanceof又两个用途
# 1.判断前面那个是否是后面的对象
# 2.判断前面的是否实现类后面的接口
#这里如果$instance属性内部已经存储了对象,那么无需在实例化了
{
self::$instance=new self;
}
return self::$instance; #返回属性自身,当然现在已经是对象了.
}
public function info()
{
echo "this is a test"; #测试方法.
}
public function __clone()#如果外部进行克隆那么返回一个致命错误.
{
trigger_error('Clone is not allow!',E_USER_ERROR);
}
}
$e=Single::getInstance(); #调用静态方法,这个方法也是单例模式的精髓.
$e->info();
?>