У меня проблема со статическими членами и наследованием в php
Почему это работает:
class A {
public static function me() {
echo static::$b;
}
}
class B extends A
{
protected static $b = "hello";
}
B::me();
и это не ??????????:
class A {
public static function me() {
echo static::$b;
}
}
class B extends A
{
private static $b = "hello";
}
B::me();
Я понимаю, что я имею в виду переменную $ b из контекста A
но почему я могу получить доступ к защищенному члену, а не к частному?
Спасибо.
Посмотрите. private
предназначен только для самого класса, в то время как protected
для семьи. Не удивительно, что $ b не доступен в A, если вы объявите это private
для B, независимо от того, B наследуется от A. С другой стороны, если вы объявите это protected
, A также может получить к нему доступ, потому что он принадлежит семье B.
Других решений пока нет …