单例模式:保证整个系统只创建一次类。
不能使用new来创建对象。故构造函数私有化,并对外提供公有方法,返回实例。
实现方法:
1:静态属性,用来保存创建的类。
2:私有的构造函数(__construct),私有的克隆函数(__clone,防止克隆)
3:公有的静态方法,创建类(new self)保存在静态属性中,并返回。
用于:多人项目中数据库链接,windows的任务管理器等。
<?php
class sigle{
//设置静态变量为null,静态变量在调用时只创建一次,只能使用self调用。
private static $save = null;
private function __construct(){
echo '这是单例模式';
}
//注意:静态方法不能调用非静态变量。
public static function getSigle(){
if(!isset(self::$save)){
self::$save = new self();
}
return self::$save;
}
private function __clone(){
throw new Exception('禁止克隆该类');
}
}
$s = sigle::getSigle();//输出:这是单例模式
$s1 = sigle::getSigle();// 无输出
?>