php后期静态绑定

自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类。 虽然也可以调用非静态方法,但是不会在运行时绑定。

static 不再只是简单的静态修饰关键字。而是可以像下面这样调用类的静态方法,非静态方法,为什么静态非静态要分开说呢,因为调用的效果是不一样的。

  1. <?php
  2. class  A  {
  3. public static function  who () {
  4. echo  __CLASS__ ;
  5. }
  6. public static function  test () {
  7. static:: who ();  // 后期静态绑定从这里开始
  8. }
  9. }
  10. class  B  extends  A  {
  11. public static function  who () {
  12. echo  __CLASS__ ;
  13. }
  14. }
  15. B :: test ();
  16. ?>

如上代码:B调用test方法,test方法调用who方法。而B类中重写了who方法,则实际调用的是B中的who方法,所以输出的__CLASS__是B  这就是说 static 调用的静态方法会在运行时自动判断调用谁的方法如果7行那里是self的话,就是调用的A的who方法)。

而self则只会调用定义它时所在的类中的方法。这是static的一个区别于其它调用的一个新特性。而static调用非静态方法时则不会达到这种后期绑定的效果,所以叫后期静态绑定。

这里static和self的用法很相似,只是作用区别大。

还有就是 static只能调用静态属性。

总结:

综上所述,static关键字可以实现以下功能:

1 调用类的静态方法   有后期静态绑定效果;

2 调用类的静态属性   有后期静态绑定效果;

3 调用类的非静态方法  没有后期静态绑定效果;

4 强调一下 不可以调用非静态属性;

最新文章

  1. RelativeLayout的位置属性总结
  2. golang学习之旅:官方文档汇总
  3. Configure Log Shipping
  4. 眼见为实(1):C++基本概念在编译器中的实现
  5. 【枚举+数学】【HDU1271】整数对 难度:五颗星
  6. 天气正好,hello world!
  7. Gist - Fetch Usage
  8. textarea自适应高度,div模仿textarea可编辑实现自适应高度,placeholder使用图标
  9. PS 滤镜算法原理——曝光过度
  10. bzoj 2820 莫比乌斯反演
  11. Java~类,抽象类和接口
  12. 关于Numba开源库(Python语法代码加速处理,看过一个例子,速度可提高6倍)
  13. bzoj3262: 陌上花开(CDQ+树状数组处理三维偏序问题)
  14. 数组练习题A财务管理
  15. javaweb(2)之Servlet入门
  16. windows更改命令行cmd的字体为conlosas+微软雅黑
  17. Java:Swing篇,实现JList、JTextArea的自动滚动,实时刷新功能
  18. 希尔伯特曲线——第八届蓝桥杯C语言B组(国赛)第三题
  19. 前端开发工程师 - 01.页面制作 - 第1章.Photoshop切图
  20. Python eval 函数说明

热门文章

  1. DevExpress的GridControl拖拽DraopDown后计算HitInfo的RowHandle错误
  2. 备忘录模式(Memento)C++实现
  3. 移动web开发中自己遇到的三个小题及解决方法
  4. hdu3938 Portal 离线的并查集
  5. Mock Framework
  6. VHDL之Aggregate
  7. RabbitMQ学习之messageconver插件实现(Gson)
  8. 优动漫PAINT(clip studio paint)怎么画一幅水墨竹子图
  9. vc++绘图,颜色
  10. Nginx+php-fpm 502 504问题