对静态变量的访问属于其他类中的类

时间:2014-04-30 13:33:01

标签: php class static composition

我有两节课。 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;
    }
}

如您所见,有一个解决方案。但是有必要写出额外的一行。是否可以在一行中解决任务?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

不可能在一行中完成(只是PHP的约束)。我建议添加一个可以使用的功能,如下所示:

public function getStaticVar($var) {
    $class = new ReflectionClass($this->object);
    $value = $class->getStaticPropertyValue($var);

    return $value;
}

使用Reflection库是在PHP中动态访问动态静态属性的唯一方法。