摘要:单例模式:一个类仅允许被实例化一次<?php class Doggie { //将构造方法私有化:禁止从外部实例化类 private function __construct() {}  
单例模式:一个类仅允许被实例化一次
<?php
class Doggie
{
//将构造方法私有化:禁止从外部实例化类
private function __construct() {}
//将克隆方法私有化:禁止从外部克隆该类的实例
private function __clone() {}
//创建内部属性$instance,用来保存当前类实例
protected static $instance = null;
//创建外部接口,用来返回当前类的唯一实例
public static function getInstance()
{
if (is_null(static::$instance)) {
static::$instance = new static();
}
return static::$instance;
}
}
$dog1 = Doggie::getInstance();
$dog2 = Doggie::getInstance();
echo ($dog1 instanceof Doggie) ? '是' : '不是';
echo '<br>';
echo ($dog2 instanceof Doggie) ? '是' : '不是';
echo '<br>';
echo ($dog1 === $dog2) ? '完全相等' : '不相等';
echo '<br>';
var_dump($dog1, $dog2);object(Doggie)#1 (0) { } object(Doggie)#1 (0) { }
很多时候,类应该仅被实例化一次即可,例如
1.数据库的连接对象,仅需要创建一次即可
2.用户的请求对象,URL,也仅需要创建一次即可
批改老师:天蓬老师批改时间:2018-12-20 16:38:39
老师总结:很多脚本语言,单例是通过自执行函数实现的, 当然 php中有自己的规则