【问题标题】:Static bindings in PHPPHP 中的静态绑定
【发布时间】:2017-12-14 02:52:03
【问题描述】:

下面的代码是Example #4 from the PHP documentation on late static bindings。

<?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();

我的问题是为什么输出是“ACC”而不是“ABC”。期待您的帮助!

【问题讨论】:

  • 函数通过self和parent在C范围内执行,所以CLASS返回C
  • 文档(您从中复制但未注明出处)解释了转发呼叫和非转发呼叫之间的区别,并以该代码为例说明其工作原理。如果您需要帮助,请解释为什么包含此示例的文档和示例说明无法解决您的问题。

标签: php static


【解决方案1】:

我认为您对“非转接电话”的了解较少。访问link并找到您需要的内容。

【讨论】:

  • 最好包含您的答案的完整解释,而不是简单地指向一个链接(可能会随着时间的推移而消失)。目前尚不清楚您提供的答案是什么。
猜你喜欢
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多