<?php
namespace lib;
abstract class Singleton
{
//设置一个私有的静态属性作为中间变量
private static $instancePool = [];
//將構造及克隆私有化,防止通过克隆等方式进行调用
final private function __construct(){
$this->init();
}
final private function __clone(){}
protected function init() {}
final public static function getInstance() {
$class = get_called_class();
//如果,所设置的静态属性的值,还为null 的话,那么就需要实例化自己,否则直接返回
if (!isset(self::$instancePool[$class])) {
self::$instancePool[$class] = new static();
}
return self::$instancePool[$class];
}
}