PHP get_called_class()作为引用静态属性的变量

时间:2013-12-31 19:12:12

标签: php oop variable-variables

我正在尝试以下各种变体来引用静态属性:

get_called_class()::$$prop

我试过这个:

${get_called_class()}::$$prop

我尝试了很多东西,但似乎无法得到它。

我知道我可以这样做:

$className = get_called_class();
$className::$$prop

但是,这意味着额外的一行代码。当然,语言必须有一种方法可以使这项工作在同一条线上。有人有解决方案吗?

(顺便说一下,静态属性是受保护的,因此它使用ReflectionClass :: getStaticPropertyValue失败。)

1 个答案:

答案 0 :(得分:2)

在不理解任何其他上下文的情况下,您无需实际调用get_called_class来查看LSB-resolved静态属性。而是使用static keyword自动解析当前调用的静态类名。

class A {

    static $foo = 'from a';

    public static function test($property) {
        echo static::$$property, "\n";
    }

}

class B extends A { static $foo = 'from b'; }
class C extends A { static $foo = 'from c'; }

PHP交互式提示示例:

php > include '/tmp/get_called_class.php';
php > A::test('foo');
from a
php > B::test('foo');
from b
php > C::test('foo');
from c
php >