如何在PHP中直接使用类名作为静态属性

时间:2017-12-28 09:07:50

标签: php class static

我有一个类名,我想使用该名称从类中获取静态属性。当然我不想一次又一次地写类名。我所能得到的就是这个。

class MyClass
{
    public static $shopClass = 'super\Long\Class\name\I\want\to\have\only\Here';

    public function do($classesStaticAttribute){

        $shopClass = self::$shopClass; //I would like to avoid this row...
        $this->doSomeStuff($shopClass::$$classesStaticAttribute);

    }
}

有什么方法可以避免$shopClass = self::$shopClass行并直接访问该属性? {self::$shopClass}::$$classesStaticAttribute不起作用。

1 个答案:

答案 0 :(得分:2)

您只需通过use导入类符号,即

use super\Long\Class\name\I\want\to\have\only\Here as Shop;

class MyClass
{
    public function do($classesStaticAttribute){

        $this->doSomeStuff(Shop::$$classesStaticAttribute);

    }
}

或者,假设您希望可以在外部设置$shopClass属性,您只需使用

即可
$this->doSomeStuff(constant(self::$shopClass . '::$' . $classesStaticAttribute));

请参阅http://php.net/manual/function.constant.php