摘要:单例模式:一个类仅允许被实例化一次<?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中有自己的规则