PHP后期静态绑定实例浅析

这篇文章主要介绍了PHP后期静态绑定,结合实例形式分析了php后期静态绑定相关概念、原理、使用方法与相关注意事项,需要的朋友可以参考下

本文实例讲述了PHP后期静态绑定。分享给大家供大家参考,具体如下:

从php5.3开始,php增加了一个叫后期绑定的功能,用于在继承范围内引用静态调用的类

该功能从语言内部角度考虑北命名为“后期静态绑定”;“后期绑定”意思说:static::不再被解析为定义当前方法所在的类,而是在实际运行时计算的,也可以成为“静态绑定”;因为他可以用于(但不限于静态方法的调用)。

self::的限制

使用self::或者_class_对当前类的静态引用,取决于定义当前方法所在的类

例子:


class A {
  public static function who() {
    echo __CLASS__;
  }
  public static function test() {
    self::who();
  }
}
class B extends A {
  public static function who() {
    echo __CLASS__;
  }
}
B::test(); //A

打印结果:

A

后期静态绑定的用法

后期静态绑定试图通过引入一个关键字表示运行时最初调用的类来绕过限制。简单的说,这个关键字能够让你在上述中调用test()时引用的类是B而不是A。最终决定不引用新的关键字,而是使用已经预留static关键字

例子:


<?php
class A {
  public static function who() {
    echo __CLASS__;
  }
  public static function test() {
    static::who(); // 后期静态绑定从这里开始
  }
}
class B extends A {
  public static function who() {
    echo __CLASS__;
  }
}
B::test();
?>

打印结果是:

B

后期静态绑定的处理方式解决了以往完全没有解决的静态调用,另外一方面,如果静态调用使用parent::或者self::将转发调用信息


<?php
class A {
  public static function foo() {
    static::who();
  }
  public static function who() {
    echo __CLASS__."\n";
  }
}
class B extends A {
  public static function test() {
    A::foo();
    parent::foo();
    self::foo();
  }
  public static function who() {
    echo __CLASS__."\n";
  }
}
class C extends B {
  public static function who() {
    echo __CLASS__."\n";
  }
}
C::test();
?>

打印结果:

A
C
C

例子:


<?php
class a {
 static public function test() {
  print get_called_class();
 }
}
class b extends a {
}
a::test();
b::test();
?>

打印结果:

a
b

特别声明:

get_called_class();获得类的名称静态方法中调用

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

这篇文章主要介绍了PHP+Ajax简单get验证操作,涉及php结合ajax无刷新提交验证相关操作技巧,需要的朋友可以参考下
这篇文章主要介绍了PHP结合jquery ajax实现上传多张图片,并限制图片大小操作,涉及php结合jQuery ajax文件上传及文件属性相关操作技巧,需要的朋友可以参考下
这篇文章主要介绍了PHP实现获取毫秒时间戳的方法,结合实例形式分析了php使用microtime()函数获取、转换毫秒级时间戳的相关操作技巧,需要的朋友可以参考下
在本篇文章里小编给大家分享了关于PHP中“=符号用法和作用详解,需要的朋友们学习下。
今天小编就为大家分享一篇关于PHP htmlspecialchars_decode()函数用法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
今天小编就为大家分享一篇关于PHP递归的三种常用方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧