private static PHP,PHP延时静态绑定以及self 和 static 的区别 | 剑花烟雨江南
首先我们来看下,self和static的区别:
class A
{
public static $num = 1;
public static function show(){
echo self::$num;
echo '
';
echo static::$num;
}
}
A::show();
输出结果:
1
1
我们再来看:
class A
{
public static $num = 1;
public static function show(){
echo self::$num;
echo '
';
echo static::$num;
}
}
class B extends A
{
public static $num = 2;
}
B::show();
输出结果:
1
2
可以看出: 当子类覆盖父类的静态属性时,self 输出依然是父类的静态属性值,而static 输出的则是子类的静态属性值。
那么,当子类继承父类时,就不用在重复实现getInstance(),而是将父类的static::$instance绑定为子类,这就是PHP延时静态绑定。
实现方式:
class A
{
private static $instance = [];
/**
* @return static
*/
public static function getInstance()
{
$class = get_called_class();
if(!isset(self::$instance[$class]) || !self::$instance[$class] instanceof $class){
self::$instance[$class] = new static();
}
return self::$instance[$class];
}
}
private static PHP,PHP延时静态绑定以及self 和 static 的区别 | 剑花烟雨江南相关推荐
- java中的static类_再议Java中的static关键字
再议Java中的static关键字 java中的static关键字在很久之前的一篇博文中已经讲到过了,感兴趣的朋友可以参考:<Java中的static关键字解析>. 今天我们再来谈一谈st ...
- java static 函数_详解java中的static关键字
Java中的static关键字可以用于修饰变量.方法.代码块和类,还可以与import关键字联合使用,使用的方式不同赋予了static关键字不同的作用,且在开发中使用广泛,这里做一下深入了解. 静态资 ...
- java中static修饰函数_详解java中static关键词的作用
在java中,static是一个修饰符,用于修饰类的成员方法.类的成员变量,另外可以编写static代码块来优化程序性能:被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载 ...
- java里面的static静态问题————Cannot use this in a static context
错误提示意思:this不能用在这串代码内. public static void main(String args[]){int a=10;int sum;sum=this.a+a;System.ou ...
- C语言中的 static变量(全局和局部)、static函数总结
简介: C语言中的 static变量(全局和局部).static函数总结 文章目录 本博文的简述or解决问题? 同步博文: static 变量: 静态局部变量: 静态全局变量: static 函数-. ...
- 7 面向对象(成员变量和局部变量的区别,类作为形式参数的问题,匿名对象,封装,private关键字,this关键字,构造方法,类的初始化过程,static关键字)
1:成员变量和局部变量的区别(理解) (1)在类中的位置不同 成员变量:类中方法外 局部变量:方法定义中或者方法声明上 (2)在内存中的位置不同 成员变量:在堆中 局部变量:在栈中 (3)生命周期不同 ...
- java static 变量 初始化一次_关于java static变量初始化的疑问
java中,类的static变量作为类变量,只需要被一次初始化,就可使用,但是,我在程序中遇到一个问题: 在web.xml中配置listener,服务器启动时,ServletContextListen ...
- php new static,PHP面向对象中new self( )和 new static( ) 的区别
首先阐明结论,在PHP中 self指向定义了当前被调用方法的类, static指向调用当前静态方法的类. 接下来通过一个例子来证明上面的结果 class A { public static $_a = ...
- java中static和this_理解Java中this和static的含义
//this:当前对象的引用 //在引用一个类的成员变量,this被编译器隐含传递过去 //this的用法 //返回当前对象的引用 //从一个构造函数中调用另外一个构造函数 //区分同名的成员变量和参 ...
最新文章
- Vijos P1848 记数问题【进制】
- 一天1个机器学习知识点(二)
- mysql远程访问显示警告信息_mysql远程访问的时候遇到了各种问题
- 不会部署并调试SpringBoot源码?一看必会IDEA操作
- android window设置动画,android - 具有动画的Windowmanager
- kotlin编译失败_关于应用Kotlin后的编译速度问题
- 一道笔试题的解法和联想
- 数据库专家:MySQL分片水很深
- 【通讯录】Excel通讯录导入手机详细教程
- 德勤:制造业企业数字化转型方案(PPT)
- C语言模拟实现虚拟存储管理(请求分页存储管理)
- opqcp c语言代码混淆器 error
- workman安装以及使用
- Linux入门怎么学?262页linux学习笔记,零基础也能轻松入门
- 支持电力国网I1协议的4G低功耗摄像头解决方案
- C语言入门:计算总成绩和平均成绩
- 卡尔曼滤波器之经典卡尔曼滤波
- 帝国cms支付系统的漏单风险
- [编译原理]吉林大学编译原理csf课件下载(1-64) 主讲:康辉 (附破解补丁)
- Python处理大学英语四级考试数据(Excel文件)案例一则
热门文章
- 黑苹果CLOVER引导去除多余引导项Windows10+MacOS+DeepinLinux+FydeOS+MintLinux+ManjaroLinux
- 总结:linux驱动之I2C至少四种读写方法
- 2019CSUST选拔赛
- linux 16.04系统下载,Ubuntu MATE 16.04 LTS 发布下载
- Linux centos关闭防火墙
- 灵魂战车2 复仇之魂
- Mockito的@Mock与@MockBean
- html2canvas手机黑屏,华为手机使用canvas.getContext('2d')真机黑屏
- hrbust 2189 节点连接
- 献给朋友们的一本书--《31天成为IT服务达人》