单例模式:只有一个实例,自行实例化,提供全局访问的方法
优点:防止重复实例化,消耗内存
PHP一个主要应用场合就是应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源。
php对象的是生存时间是从一个脚本开始到结束位置。因此单例模式(静态变量)只是在一个页面多次调用一个对象时才起作用
实现方式:
1.定义一个静态方法来存储这个类的唯一对象
2.将_construct()方法定义为私有方法防止从类外部实例化
3.将_clone()方法定义为私有方法防止从类外部进行克隆
4.定义一个静态方法来获取这个类的唯一对象
class A
{
private static $_instance = null;
private function __construct()
{
}
private function __clone()
{
}
public function getIntance()
{
if (!(self::$_instance = instanceof self)) {
self::$_instance = new self();
}
return self::$_instance;
}
}
$A = A::getInstance();