我有两节课。 B类有字段:A类对象(组合关系)。有必要获得A类的静态变量。但是代码中存在一些问题:
<?php
class A {
public static $var = 'a';
}
class B {
private $object;
private function staticAccess($className) {
$this->object = $className;
}
public function __construct() {
$this->staticAccess('A');
// This is wrong syntax:
//$a = $this->object::$var;
// Syntax which works but unconvenient
$objA = $this->object;
$a = $objA::$var;
}
}
如您所见,有一个解决方案。但是有必要写出额外的一行。是否可以在一行中解决任务?
感谢您的帮助!
答案 0 :(得分:1)
不可能在一行中完成(只是PHP的约束)。我建议添加一个可以使用的功能,如下所示:
public function getStaticVar($var) {
$class = new ReflectionClass($this->object);
$value = $class->getStaticPropertyValue($var);
return $value;
}
使用Reflection库是在PHP中动态访问动态静态属性的唯一方法。