php 单例 基类,php继承单例类实现各子类的单例-程序员宅基地

技术标签: php 单例 基类  

父类不能被实例化,不能给覆盖。子类实现单例不能使用self,而是用static,它们都是在类体内调用类的方式,区别在于self关键字是在编译时决定它所指代的类,它写在了哪个类中,它指代的就是那个类。而static关键字则是在执行的过程中才决定它所指代的类。

abstract class father{

final protected function __construct(){

$this->init();

}

final protected function __clone(){}

protected function init(){}

//abstract protected function init();

public static function getInstance(){

if(static::$instance === null){

static::$instance = new static();

}

return static::$instance;

}

}

子类声明$instance静态属性,它们从属于各个子类,在父类的getIntance方法中,通过static关键字,调用子类并实例化,然后又赋给子类静态属性$instance。这样就可以实现将获取单例的函数封装在父类的目的。修改子类代码如下:

class Son1 extends Father{

protected static $instance = null;

...

}

class Son2 extends father{

protected static $instance = null;

....

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34659856/article/details/115934092

智能推荐

c#给tcpclient connect()设置超时_c#中tcpclient.connect连接响应很慢-程序员宅基地

使用委托beginInvoke()的轮询模式在调用beginInvoke时将新建一个线程异步执行,使用轮询模式,判断方式是否已执行完成,并判断其是否超时。缺点: 当超时时,无法abort在运行的线程。代码。https://stackoverflow.com/questions/27616370/how-can-i-add-timeout-to-this-code?noredirect=13.https://docs.microsoft.com/en-us/dotnet/standard.._c#中tcpclient.connect连接响应很慢

CSS盒模型-程序员宅基地

盒模型(box model)是CSS中的一个重要概念,它规定了元素框处理元素内容、内边距、边框 和 外边距 的方式。

联诚发(LCF):用大数据看小间距屏_联诚发小间距-程序员宅基地

小间距LED全彩显示屏自从投入市场应用以来,一直是业界的焦点,不但在LED行业内处于顶尖的位置,在应用市场上也是四处征战,挑战各种传统显示大屏,凭借自身独到的优势,将其他类型的显示屏纷纷挤落一旁,在自己大热的同时压制得传统类型显示屏备受冷落。联诚发(LCF)所生产的小间距LED全彩显示屏,超清细腻、高亮绚丽,已在国内外多个领域实际应用,并备受好评。 据了解,有专家将LED行业的_联诚发小间距

android.view.InflateException: Binary XML file line #2: Error inflating class linearlayout-程序员宅基地

异常:android.view.InflateException: Binary XML file line #2: Error inflating class linearlayout资源文件 起初的怀疑: 类库未正确引入; 资源文件命名空间,属性集缺失; 自定义类在proguard-rules.pro中未keep; 但这些都被一一排除了。最后定位在xml文件上,发现linearlayo

verilog 实现DES密码算法-程序员宅基地

1.课题概述(任务、目的、要求) 本课题的任务:利用verilog语言编写出DES密码算法,并在Quartus ii上综合,得到RTL级电路。本课题的目的:1. 通过本课题熟练掌握verilog语言,并理解DES加密原 理; 2. 熟悉Quartus ii 软件使用方法。本课题的要求: 通过本课题的研究,要独立完成本实验,得到综合结果。

随便推点

区块链是安全的,但你不是_欧米读书会的博客-程序员宅基地

今天加密领域的口头禅是“机构即将到来”。这与事实相去甚远。金融服务所需的安全程度远远超出了我们今天的加密货币所能提供的程度。问题在于,机构对安全的含义非常不同,远远超出了加密货币人群所理解的含义。它包括传统的数字安全,但也包括纠正错误和取回被盗资金的合理能力,以及与他人共享访问权限并保持这种共享不会导致问题的信心。这是实现加密安全所需的说明,至少在数字安全方面。这篇文章列出了加密货币用户应采取的所有措施以确保安全。(脚注:阅读并严格遵守!)要执行作者的建议,必须花费很多时间,而且不仅仅是一次,而是每隔一

快速排序的几种常见实现及其性能对比_排序方法用软件工具作出性能对比图-程序员宅基地

Hoare的变形版本(空穴法)快速排序算法是一种不稳定的排序算法。其时间复杂度为O(nlogn),最坏复杂度为O(n^2);快排的空间复杂度为O(logn),这个不确定正确。假设待排序的数组为a[],快速排序算法最常见的做法是将第一个元素设置为枢纽元。设置两个指针low和high,它们分别指向待排序的数组的低和高位:(1)high向左移动找小于枢纽的元素,找到后(找到的是a[high]_排序方法用软件工具作出性能对比图

短信技术的几个基本概念-程序员宅基地

1. 短信的有效期(validity period)如果接收手机离线,一条短信会暂时存储在短信服务中心.也可以给短信设置一个时间期限,就是短信过多久才会从短信服务中心删除,这样一来即使是接收手机转成在线短信也不会被发送给接收手机.这个时间期限就叫做有效期.举个例子来说明如何使用有效期.比如你现在发现电视播放的某个节目非常的有意思,你的朋友没准也想观看一下.因此,你发了一条短信把电视

Kali linux 学习笔记(五十三)Web渗透——XSSer 2020.3.30_kali xsser-程序员宅基地

前言本节学习XSSer一个用来实施XSS的工具_kali xsser

Java GC:垃圾回收器种类_java gc的回收器有哪些?-程序员宅基地

http://www.importnew.com/13827.html在这篇教程中我们将学习几种现有的垃圾回收器。在Java中,垃圾回收是一个自动的进程可以替代程序员进行内存的分配与回收这些复杂的工作。这篇是垃圾回 收教程系列的第三篇,在前面的第2部分我们看到了在Java中垃圾回收是如何工作的,那是篇有意思的文章,我推荐你去看一下。第一部分介绍了Java的垃 圾回收,主要有JVM体系结构,_java gc的回收器有哪些?

CentOS安装SFTP-程序员宅基地

为什么80%的码农都做不了架构师?>>> ...