php new static,PHP 的 new static 和 new self
下面我们举个栗子:class Father {
public static function getSelf() {
return new self();
}
public static function getStatic() {
return new static();
}
}
class Son extends Father {}
echo get_class(Son::getSelf()); // Father
echo get_class(Son::getStatic()); // Son
echo get_class(Father::getSelf()); // Father
echo get_class(Father::getStatic()); // Father
new self
这里面注意这一行 get_class(Son::getStatic()); 返回的是 Son 这个 class, 可以总结如下:
self 返回的是 new self 中关键字 new 所在的类中,比如这里例子的 :public static function getSelf() {
return new self(); // new 关键字在 Father 这里
}
始终返回 Father。
new static
static 则上面的基础上,更聪明一点点:static 会返回执行 new static() 的类,比如 Son 执行 get_class(Son::getStatic()) 返回的是 Son, Father 执行 get_class(Father::getStatic()) 返回的是 Father
而在没有继承的情况下,可以认为 new self 和 new static 是返回相同的结果。
php new static,PHP 的 new static 和 new self相关推荐
- java中static、final、static final的区别
总结一: final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final修饰的属性跟具体对象有关,在运行期初始 ...
- php中的static,php中的static
类的方法和属性都是可以用static来声明的,下面举几个例子 class one(){ public static $para = "1"; public static me ...
- static方法与非static方法是否可以互相调用
情况一.static方法调用非static方法 非静态方法只有实例对象才可调用,而静态方法随着类的加载而加载,类的加载在实例对象产生之前,所以静态方法不能调用非静态方法 情况二.非atic方法调用st ...
- java static用法_Java中static关键字的作用和用法详细介绍
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- static关键字_聊聊static关键字
前言:今天看看powermock测试框架的基础知识,简单了解了一下Mock 的底层原理. Mockito底层使用了动态代理,用到了CGLIB.因此需要被mock的对象,Mockito都会生成一个子类继 ...
- 转:java中static、final、static final的区别
http://blog.csdn.net/qq1623267754/article/details/36190715 final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性 ...
- java中static x 5_java中static作用详解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- java中static作用_java中static作用详解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以修饰静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...
不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概 ...
- java中static、final、static final浅析
final final可以修饰类.属性.方法.局部变量.参数,不能修饰接口! final修饰类:该类不能被继承(解释了为什么不能修饰接口,不过接口里面的属性.方法等是可以用final修饰的): fin ...
最新文章
- pythonl学习笔记——爬虫的基本常识
- 自己动手 从android硬件驱动到APP---(1)硬件驱动层
- php json转数组_相同逻辑的php与golang代码效率对比,最好语言落谁家…
- 神经网络之dropout层
- Gtk-WARNING : cannot open display----这个问题在NVIDIA TX2上碰到过就是DISPLAY=“:0“
- Nhibernate中Unexpected row count的一种解决办法
- 1005 Spell It Right (20)(20 分)
- js获取本机ip地址
- 解决网页内容无法复制的方法
- 微信内置浏览器不能下载应用文件的解决方案-微信跳转手机默认浏览器
- Android 本地化翻译插件,解放你的双手! AndroidLocalizePlugin
- 绕过disable_functions,LD_PRELOAD hijack so file
- 浅谈电力系统短路故障的分析
- 全国社会组织信用信息公式平台(试运行)爬虫记录
- 摄像头录像时出现连接错误
- DS SIMULIA CST STUDIO SUITE 2021.03 SP3 Update Only x64
- 服务器文件夹temp,服务器性能变慢 c盘temp文件夹存在大量sess开头文件的问题原因及解决...
- c语言输入算术运算符,运算符算术运算符 - C语言教程
- 工业4.0时代读后感
- C语言if条件语句教案,C语言公开课教案.ppt