我有一个类名,我想使用该名称从类中获取静态属性。当然我不想一次又一次地写类名。我所能得到的就是这个。
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
不起作用。
答案 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));