.singleton.php 文件 (单例模式可被继承 代码实例)

<?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];
}
}
原文地址:https://www.cnblogs.com/roadone/p/7978477.html