在阅读一些框架的源码时发现了new static(),和new self(),甚是不解,后来查阅资料,才知道static采用了延迟绑定,能准确知道是父类还是子类的调用。这就是说static是个聪明的小孩,家里的亲戚的辈分他都能准确的叫出;而不是像他的兄弟self,只知道自己的亲爹妈。

例子如下:

<?phpclass Father{protected  static $name = "father";public static function whoami_self(){echo self::$name."\n";}public static function whoami_static(){echo static::$name."\n";}public static function getInstance_self(){return new self();}public static function getInstance_static(){return new static();}
}class FatherBrother extends Father{protected  static $name = "uncle";
}FatherBrother::whoami_self(); //father
FatherBrother::whoami_static(); //uncle
var_dump(FatherBrother::getInstance_self()); //father
var_dump(var_dump(FatherBrother::getInstance_static())); //uncle

 

转载至:https://www.cnblogs.com/xdao/p/static_self_in_php.html

转载于:https://www.cnblogs.com/starfish29/p/11217138.html

php中static和self的区别相关推荐

  1. C++与C# 中static 成员变量的区别

    C#中 类的静态成员变量(m_Number)可以通过非静态的成员函数(GetNumber().SetNumber())访问 这样,在外部,就可以new 一个类对象,通过调用该对象(sv)的GetNum ...

  2. java static 区别_Java中static和final的区别

    static是静态修饰关键字,可以修饰变量和程序块以及类方法: 当定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存: 当修饰一个程序 ...

  3. php self this static,PHP 中 self、static、$this 的区别和后期静态绑定详解

    本篇文章给大家分享的内容是关于PHP 中 self.static.$this 的区别和后期静态绑定详解,有着一定的参考价值,有需要的朋友可以参考一下 self.static 和 $this 的区别 为 ...

  4. java中static、final 和 static final之间的区别

    java中static.final 和 static final之间的区别 static可以修饰:全局属性,方法,代码块,内部类(静态内部类或嵌套内部类) 由于静态属性和方法是属于该类的所有对象的,所 ...

  5. Systemverilog中static、automatic区别

    一.静态变量.动态变量说明:Systemverilog绿皮书P60.补充说明如下: Verilog早期版本仅有静态生命周期的概念,同一个function或者task无论你调用多少次内部的变量都是分配的 ...

  6. php self 和 static,PHP中static和self有哪些区别?

    PHP中static和self有哪些区别? 发布时间:2020-04-02 14:51:57 来源:亿速云 阅读:36 作者:小新 这篇文章主要为大家详细介绍了PHP中static和self有哪些区别 ...

  7. php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析

    本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...

  8. 【C++】C/C++ 中 static 的用法全局变量与局部变量

    C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的 ...

  9. objective-C 中使用@Class和 #import区别

    2019独角兽企业重金招聘Python工程师标准>>> We can import class declaration with #import: #import "Som ...

最新文章

  1. Tim Berners-Lee重新分散的新Web SOLID简介
  2. Linux SVN命令详解
  3. 基于OpenResty的弹性网关实践(二)
  4. SUM and REPLACE
  5. 走近Quick Audience,了解消费者运营产品的发展和演变
  6. laravel的重定向
  7. 作者:孙忠富(1957-),男,中国农业科学院农业环境与可持续发展研究所研究员。...
  8. HTML通过java信息保存,如何使用java邮件API将HTML格式的数据保存为java邮件的主体?...
  9. 华为天才少年1万元自制机械臂:能给葡萄缝针!
  10. gcc mips64编译后无法运行在octeon上运行_V 语言运行hello world程序
  11. sharepoint2013列表实现项目级权限控制
  12. python—json模块的编码与解码
  13. 使用ERStudio创建数据表ER图并导出数据表的SQL(DDL)语句
  14. 数学建模——人口预测模型
  15. 图书管理系统项目开发计划书
  16. 微信小程序组件之picker-view
  17. 淘宝前后端分离实践(PPT)
  18. CentOS 8 安装视频网站与流媒体直播Nginx-http-flv-module模块
  19. 电脑开机直接进入桌面
  20. 【前端作业系列】HTML基础点 , 训练表格(2022年6月17日作业)

热门文章

  1. Centos 安装 MySql
  2. P4324 [JSOI2016]扭动的回文串
  3. BZOJ4076 : [Wf2014]Maze Reduction
  4. Python:操作文件
  5. [开源].NET数据库访问框架Chloe.ORM
  6. js中获得当前时间是年份和月份
  7. 非常好用的网站状态监控服务:SiteUpTime,监控你的Http/Mail/Ping etc.
  8. Html,xhtml,xml的定义和区别
  9. EXP1 PC平台逆向破解
  10. JAVA实现简单链表操作