В PHP возможно ли получить доступ к статическим свойствам объекта, который сам является свойством другого объекта, используя подобный синтаксис ниже:
<?php
class Foo
{
public $bar;
function __construct()
{
$this->bar = new Bar();
}
}
class Bar
{
const TEST = 123;
function __construct() {}
}
$bar = new Bar();
$foo = new Foo();
echo Bar::TEST; // ok
echo $bar::TEST; // ok
echo $foo->bar::TEST; // error
?>
Присвойте свойство переменной.
$foo = new Foo();
$bar = $foo->bar;
echo $bar::TEST; // that's good.
более сложно, но вы можете использовать ReflectionClass
echo (new ReflectionClass(get_class($foo->bar)))->getconstant("TEST");
Возможно, вам повезет больше, используя Позднее статическое связывание вместо наследования на это имущество. Так что это будет что-то вроде этого (см. Пример со страницы руководства PHP выше):
<?php
class A
{
public static function who()
{
echo __CLASS__;
}
public static function test()
{
static ::who();
// Here comes Late Static Bindings
}
}
class B extends A
{
public static function who()
{
echo __CLASS__;
}
}
B::test();
?>
Вот еще одна тема, которая может быть актуальной или полезной: Наследование PHP и статические методы и свойства