使用变量动态访问静态属性

时间:2018-09-19 01:00:16

标签: php oop variables static

我正在尝试动态访问静态命名空间属性(使用delight-im的auth)。可能的值可能是:

\Delight\Auth\Role::ADMIN
\Delight\Auth\Role::USER

我想动态命名ADMIN部分,例如:

\Delight\Auth\Role::$role

但是PHP告诉我:

 Access to undeclared static property: Delight\Auth\Role::$role

所以我尝试使用可变变量,例如:

 \Delight\Auth\Role::$$val

(两个$),错误更改为:

 Access to undeclared static property: Delight\Auth\Role::$ADMIN

因此您可以看到该变量已解析,但是仍然插入了$。如果使用PHP 5.6.37会有所帮助。

有没有办法像这样动态地访问静态属性?

1 个答案:

答案 0 :(得分:0)

您正在混淆术语。您正在使用的语法正在访问类的静态属性,但是您正在描述类常量的功能。

Static properties是存储在类中的可变变量。 PHP手册中的示例:

<?php
class Foo
{
    public static $my_static = 'foo';

    public function staticValue() {
        return self::$my_static;
    }
}

您将像这样引用$ my_static:Foo::$my_static

Class constants似乎就是您所描述的。 PHP手册中的示例:

<?php
class MyClass
{
    const CONSTANT = 'constant value';

    function showConstant() {
        echo  self::CONSTANT . "\n";
    }
}

您将像这样引用CONSTANT:MyClass::CONSTANT

这是better answer,描述了如何动态引用类常量,这就是您要尝试做的事情。

相关问题