哪些是“ static ::”实际行为,以及后期静态绑定行为?

时间:2019-05-21 16:02:02

标签: php inheritance permissions static late-static-binding

有一些继承和static::调用的代码。 我想知道这些行为的原因以及代码发生了什么。

它与PHP-OOP一起运行。

我已经阅读了相同的问题What exactly are late static bindings in PHP?,不同之处在于该问题必须将访问修饰符public更改为private才能使行为有所不同。我想知道当时发生了什么。

可能太多了。谢谢您的阅读。

class PClass {
    private static $a = 'pa';
    private static function b() {
        echo 'psfb';
    }
    public static function getA() {
        echo static::$a;
    }
    public static function getB() {
        static::b();
    }
}

class CFirstClass extends PClass {
}
class CSecondClass extends PClass {
    private static $a = 'csa';
    private static function b() {
        echo 'cssfb';
    }
}

CFirstClass::getA(); // output: Error
CFirstClass::getB(); // output: psfb

CSecondClass::getA(); // output: Error
CSecondClass::getB(); // output: Error

为什么第一次通话getB()会成功?有人可以提供有关late static binding的更多详细信息吗?再次感谢大家。

0 个答案:

没有答案