php 单例模式
短信预约 -IT技能 免费直播动态提醒
1,单例模式,属于创建设计模式,简单来说就是一个类只能有一个实例化对象,并提供一个当前类的全局唯一可访问入口;
2,例子
可继承的单例模式:
abstract class Singleton{ // 受保护的构造函数,确保不能通过 new 关键字直接实例化对象 protected function __construct() { // 初始化操作 } // 防止对象被复制 protected function __clone() { throw new Exception("Singleton instance cannot be cloned."); } // 防止对象被序列化 protected function __wakeup() { throw new Exception("Singleton instance cannot be serialized."); } // 获取实例的静态方法 public static function getInstance() { //这里用到了延迟静态绑定,static指向的是调用的类,而不是定义的类 if (!static::$instance) { static::$instance = new static(); } return static::$instance; } // 其他业务方法}class SubSingleton extends Singleton{ protected static $instance=null; // 添加其他额外的功能或覆盖父类的方法}class Sub extends Singleton{ protected static $instance=null; // 添加其他额外的功能或覆盖父类的方法}//$singleton1和$singleton2 是同一个实例$sub1 = Sub::getInstance();$sub2 = Sub::getInstance();var_dump($sub1);//object(Sub)#1 (0) { }var_dump($sub2);//object(Sub)#1 (0) { }//$subSingleton1 和subSingleton2是同一个实例$subSingleton1 = SubSingleton::getInstance();$subSingleton2 = SubSingleton::getInstance();var_dump($subSingleton1);//object(SubSingleton)#2var_dump($subSingleton2);//object(SubSingleton)#2
来源地址:https://blog.csdn.net/zhouchang111/article/details/131956958
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341