单例类至少用友以下三种公共元素

  • 它们必须拥有一个构造函数,并且必须修饰为private。
  • 它们拥有一个保存类的实例的静态成员变量。
  • 它们拥有一个访问这个实例的公共的静态方法。

单例类不能在其他类中直接实例化。只能被其自身实例化。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  要让单例类起作用,就必须使其为其它类提供一个实例,用它调用各种方法。单例类不会创建实例副本,而是会想单例类内部存储的实例返回一个引用。结果是单例类不会重复占用内存和系统资源,从而让应用程序的其它部分更好地使用这些资源。作为这一模式的一部分,必须创建一个空的私有的__clone()方法,以防止对象被复制或者克隆。

  返回实例引用的方法通常命名为getInstance()。这个方法必须是静态的,而且如果它还没有实例化,就必须进行实例化。getInstance()方法通过使用instanceof操作符和self关键词,可以检测到类是否已经被实例化。

  

class Database{
	private $_db;
	static $_instance; //放该类的实例

	private function __construct(){
		$this->_db=pg_connect('dbname=example_db');
	}
	private function __clone(){}
	public static function getInstance(){
		if(!(self::$_instance instanceof self)){
			self::$_instance = new self();
		// }else{
			
		}
		return self::$_instance;
	}
	public function query(){
		//使用
	}
}

$db=Database::getInstance();
$db->query('select * from table');

  

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄