单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例
PHP 设计模式之单例模式
单例模式顾名思义,就是只有一个实例,作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
一、单例模式的三个要点:
- 某个类只能有一个实例。
- 必须自行创建这个实例。
- 必须自行向整个系统提供这个实例。
二、为什么要使用 PHP 单例模式?
- PHP 的应用有一个大方面是针对于数据库,一个应用中会存在大量的数据库操作,在使用面向对象的方式开发时,如果使用单例模式,就可以避免大量的 new 操作消耗的资源,还可以减少数据库连接,这样就不容易出现 too many connections 情况。
- 如果一个系统中需要一个类来全局控制某些配置信息,那么,使用单例模式可以很方便的实现。
- 在一次页面请求中便于进行调试,因为所有代码都集中在一个类中,可以在类中设置钩子,输出日志,避免到处的 var_dump (),echo。
class test {
private static $_instance;//保存类实例的私有静态成员变量
//定义一个私有的构造函数,确保单例类不能通过new关键字实例化,只能被其自身实例化
private final function __construct()
{
echo 'test __construct';
}
//定义私有的__clone()方法,确保单例类不能被复制或克隆
private function __clone() {}
public static function getInstance()
{
//检测类是否被实例化
if ( ! (self::$_instance instanceof self) )
{
self::$_instance = new test();
}
return self::$_instance;
}
}
// 调用单例类
test::getInstance();