php在调用静态属性时使用变量名

时间:2015-04-18 22:27:44

标签: php oop

调用静态属性时遇到问题:

const LOW = 'somethg';

当我尝试这样时,没关系:     $arrv = FuzzyClass::$terms[$pk][FuzzyQuery::LOW];

但我需要使用变量名称,它不起作用:

$pv = 'LOW';
$arrv = FuzzyClass::$terms[$pk][FuzzyQuery::$pv];

2 个答案:

答案 0 :(得分:1)

试试这个:

$arrv = FuzzyClass::$terms[$pk][constant(FuzzyQuery::$pv)];

FuzzyQuery::$pv只是一个包含LOW的字符串,因此以这种方式调用将low作为字符串返回。使用常量标识符。

答案 1 :(得分:0)

尝试使用ReflectionClass

class FuzzyQuery {
    const LOW = 'somethg';
}

class FuzzyClass {
    public static $terms = ['index' => ['somethg' => 'Hello']];
}

$pk = 'index';
$pv = 'LOW';

$reflection = new ReflectionClass('FuzzyQuery');
$arrv = FuzzyClass::$terms[$pk][$reflection->getConstant($pv)];

echo $arrv . PHP_EOL; // Hello