Если я правильно понимаю, то, на что вы ссылаетесь, называется позднестатические привязки .Если у вас есть это:
class A {
static protected $_foo = 'bar';
static public function test() {
echo self::$_foo;
}
}
class B extends A {
static protected $_foo = 'baz';
}
B::test(); // outputs 'bar'
Если вы измените бит self
на:
echo static::$_foo;
Затем выполните:
B::test(); // outputs 'baz'
Поскольку self
относитсяк классу, где $_foo
был определен (A), тогда как static
ссылается на класс, который вызвал его во время выполнения (B).
И, конечно, да, вы можете получить доступ к статическим защищенным членам вне статического метода(т.е. контекст объекта), хотя видимость и область действия все еще имеют значение.