Что произойдет, когда php приватный static attr или func, вызванный `static ::`, и кто-то его унаследуют и снова вызовут? - PullRequest
0 голосов
/ 23 мая 2019

Есть некоторый код наследования и вызывается 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?Еще раз спасибо всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...