abstract class DomainObject{public static function create(){return new self();}
}class User extends DomainObject{}
class Document extends DomainObject{}var_dump(Document::create());

结果:Fatal error: Cannot instantiate abstract class DomainObject in......

self 对当前类的静态引用,取决于定义当前方法所在的类。也就是说,这里的self被解析为定义create()的DomainObject,而不是解析为调用self的Document类。

abstract class DomainObject{public static function create(){return new static();//延迟静态绑定}
}class User extends DomainObject{}
class Document extends DomainObject{}var_dump(Document::create());

结果:

class Document#1 (0) {

}

转载于:https://blog.51cto.com/xtceetg/1743064

PHP new self和new static的区别相关推荐

  1. PHP中self和static的区别,php中self与static的区别

    原文链接,猛击这里. php中self与static的区别 通过一些示例,我们可以很容易看出self和static的区别.假定我们有class Car – 它有两个方法,model和getModel. ...

  2. C# 总结const、 readonly、 static三者区别:

    总结const. readonly. static三者区别: (有人问我,看似简单,我也没能立刻回答出来,总结一下,分享一下.) const:静态常量,也称编译时常量(compile-time con ...

  3. PHP Class中public,private,protected,static的区别

    PHP Class中public,private,protected,static的区别 public:权限是最大的,可以内部调用,实例调用,可以被继承. protected:受保护类型,用于本类和继 ...

  4. php new static,PHP中new self()和new static()的区别用法

    浅谈PHP中new self()和new static()的区别 本文介绍了PHP中new self()和new static()的区别,分享给大家,也给自己留个笔记. 1.new static() ...

  5. auto static 的区别

    1.static变量存放在静态存储区,在程序整个运行期间都不释放:而auto变量存放在动态存储区,随着生命周期的结束而立即释放. 2.static变量只赋值一次,以后就不用赋值(但是值是可以改变的,与 ...

  6. php self this static,php面向对象中self和static的区别

    在php的面向对象编程中,总会遇到 class test{ public static function test(){ self::func(); static::func(); } public ...

  7. 黑马程序员-Struct与Static的区别与联系?

    Struct与Static的区别与联系? 在C#的基础学习中,我对结构和方法总是容易混淆,一来二者长的太像,容易敲错:二来对它们的概念和用法理解不深,容易混淆.今天特此写篇博客来说明他们之间的区别与联 ...

  8. private static PHP,PHP延时静态绑定以及self 和 static 的区别 | 剑花烟雨江南

    首先我们来看下,self和static的区别: class A { public static  $num = 1; public static function show(){ echo self: ...

  9. final、static、static fina区别

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

  10. const和static readonly 区别

    我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等. 在多数情况下可以混用. 二者本质的区别在于,const的值是在编译期间确定的,因此只能 ...

最新文章

  1. react native的单选按钮react-native-radio-master
  2. [redis] Redis 常用命令
  3. 电力系统通信站和设备管理系统分析设计
  4. Android实现数据存储技术
  5. 根据数据库表gengxin实体类_ASP.NET开发实战——(十二)数据库之EF Migrations
  6. 用Jackson编写大型JSON文件
  7. django html显示xml,如何将HTML与Django集成?
  8. 动手学CV-目标检测入门教程:基本概念
  9. html5把六张图片做成立方体,HTML5绘制在立方体上的几何曲线图形
  10. PyTorch 1.0 中文文档:多进程包 - torch.multiprocessing
  11. java.lang.UnsatisfiedLinkError: no XXX in java.library.path
  12. C#中ToString()格式详解
  13. 来自天国的 kubernetes
  14. 数据结构(c语言版)各章内容总结
  15. matlab绝对均值,MATLAB中均值、方差、均方差的计算方法
  16. 【统信UOS】扫描仪设备管理驱动安装
  17. tensorflow 77 tensorflow android版本demo win10 下 编译
  18. msvcr71.dll缺失导致Oracle无法连接
  19. 一个华为人在华为工作十年的感悟 --徐家骏
  20. 微服务 —— ThoughtWorks首席科学家的早期文章

热门文章

  1. 《.NET应用架构设计:原则、模式与实践》新书博客--试读-2.1.2 设计原则实战
  2. docker安装chirpstack_docker-compose快速部署ChirpStack
  3. pythonrequest方法_解决Python requests 报错方法集锦
  4. 学会使用 diff 和 patch 命令协同开发
  5. 【哈渡谱】带你玩转Hadoop之《主机映射、镜像挂载与SSH免密篇》
  6. 关于学习Python的一点学习总结(5->切片赋值->sort排序->列表操作)
  7. HDU1261(高精度乘法+高精度除法)
  8. 组合计数 ---- Codeforces Round #370 (Div. 2)D. Memory and Scores[dp]
  9. JAVA中jsp怎么接收参数_如何使用JSP从URL获取参数
  10. jsp与java_JSP与JavaBeans