Есть некоторый код наследования и вызывается static::
.Я хочу знать причину поведения и что случилось с кодом.
Я уже прочитал тот же вопрос Что такое поздние статические привязки в 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
, если модификатор accessor имеет значение private
?Еще раз спасибо всем.