php单例模式(Singleton Pattern)
什么是单例模
Ensure a class has only one instance ,and provide a global point of access to it.
确保某个类有且仅有一个实例,该类能够自动实例化并向系统提供一个唯一的访问对象。
为什么使用单例模式
- 单例模式的对象在内存中只有一个,可以节省内存开支;
- 该对象可以常驻内存,无需频繁的实例化和销毁,减少了系统的性能开销;
- 可以避免对资源的多重占用。如文件(IO)访问
- 可以优化和共享资源访问。如数据库资源访问
PHP如何实现单例模式
大致步骤
- 私有化构造函数和克隆方法。
- 提供对外访问接口,用来获取类的实例
- 实现接口,确保接口对外提供实例的唯一性
代码
<?php
class Singleton
{
private static $obj = null;//存储实例
private function __construct (){}//私有化构造函数
private function __clone () {}//私有化克隆方法
//提供对外的公共接口---实例获取
public static function getInstance () {
//自行实例化逻辑
if (null === self::$obj) {
self::$obj = new self;//也可写作 new Singleton()
return self::$obj;
}
else{
return self::$obj;
}
}
}