Я пытаюсь понять, как наследование PHP работает в терминах «защищенной статической функции».
Скажем, у нас есть 3 класса (A, B, C), где C наследуется от B, а B от A:
class A{
# ... properties & methods
# then we have targetFunc()
protected static function grandparentFn(){
// some action
}
}
class B extends A{
protected static function parentFn(){
// some action
}
}
class C extends B{
}
Когда я делаю:
C::parentFn() // it fails .... (expected, due to protected)
Тогда, когда я делаю:
C::grandparentFn() // it works .... ????
Разве grandparentFn()
не защищен?Почему это доступно, как описано выше?Даже для статического метода, как здесь применяется видимость?