下面我们举个栗子: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相关推荐

  1. java中static、final、static final的区别

    总结一: final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final修饰的属性跟具体对象有关,在运行期初始 ...

  2. php中的static,php中的static

    类的方法和属性都是可以用static来声明的,下面举几个例子 class    one(){ public static $para = "1"; public static me ...

  3. static方法与非static方法是否可以互相调用

    情况一.static方法调用非static方法 非静态方法只有实例对象才可调用,而静态方法随着类的加载而加载,类的加载在实例对象产生之前,所以静态方法不能调用非静态方法 情况二.非atic方法调用st ...

  4. java static用法_Java中static关键字的作用和用法详细介绍

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  5. static关键字_聊聊static关键字

    前言:今天看看powermock测试框架的基础知识,简单了解了一下Mock 的底层原理. Mockito底层使用了动态代理,用到了CGLIB.因此需要被mock的对象,Mockito都会生成一个子类继 ...

  6. 转:java中static、final、static final的区别

    http://blog.csdn.net/qq1623267754/article/details/36190715 final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性 ...

  7. java中static x 5_java中static作用详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  8. java中static作用_java中static作用详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以修饰静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  9. 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...

    不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概 ...

  10. java中static、final、static final浅析

    final final可以修饰类.属性.方法.局部变量.参数,不能修饰接口! final修饰类:该类不能被继承(解释了为什么不能修饰接口,不过接口里面的属性.方法等是可以用final修饰的): fin ...

最新文章

  1. pythonl学习笔记——爬虫的基本常识
  2. 自己动手 从android硬件驱动到APP---(1)硬件驱动层
  3. php json转数组_相同逻辑的php与golang代码效率对比,最好语言落谁家…
  4. 神经网络之dropout层
  5. Gtk-WARNING : cannot open display----这个问题在NVIDIA TX2上碰到过就是DISPLAY=“:0“
  6. Nhibernate中Unexpected row count的一种解决办法
  7. 1005 Spell It Right (20)(20 分)
  8. js获取本机ip地址
  9. 解决网页内容无法复制的方法
  10. 微信内置浏览器不能下载应用文件的解决方案-微信跳转手机默认浏览器
  11. Android 本地化翻译插件,解放你的双手! AndroidLocalizePlugin
  12. 绕过disable_functions,LD_PRELOAD hijack so file
  13. 浅谈电力系统短路故障的分析
  14. 全国社会组织信用信息公式平台(试运行)爬虫记录
  15. 摄像头录像时出现连接错误
  16. DS SIMULIA CST STUDIO SUITE 2021.03 SP3 Update Only x64
  17. 服务器文件夹temp,服务器性能变慢 c盘temp文件夹存在大量sess开头文件的问题原因及解决...
  18. c语言输入算术运算符,运算符算术运算符 - C语言教程
  19. 工业4.0时代读后感
  20. C语言if条件语句教案,C语言公开课教案.ppt

热门文章

  1. 守护进程之PHP实现
  2. 前端rem单位的使用研究
  3. ios 判断某个时间是周几的方法
  4. 技术随笔八——仰望夜空 仰望Git
  5. 让敏捷交付优秀的软件
  6. Amazon.com 和 store.apple.com 哪个的购物体验更好?
  7. IDC服务器共享带宽和独享带宽的区别
  8. C++数据类型与C#对应关系 c#调用WINDWOS API时,非常有用
  9. AcWing 795. 前缀和
  10. 阿里rocketmq与自建rocketmq