爱问知识人 爱问教育 医院库

PHP后期静态绑定实例浅析

首页

PHP后期静态绑定实例浅析


        

提交回答
好评回答
  • 2023-03-05 07:30:00

    本文实例讲述了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关键字

    例子:

    <?phpclass 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:将转发调用信息

    <?phpclass 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

    例子:

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

    打印结果:

    a
    b

    特别声明:

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

    张***

    2023-03-05 07:30:00

类似问题

换一换
  • 电脑/网络 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):