有一些继承和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
的更多详细信息吗?再次感谢大家。