【问题标题】:php use variable name when call static property [duplicate]php在调用静态属性时使用变量名[重复]
【发布时间】:2015-06-25 17:55:26
【问题描述】:

调用静态属性时出现问题:

const LOW = 'somethg';

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

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

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

【问题讨论】:

  • 试试FuzzyClass::$terms[$pk][FuzzyQuery::{$pv}];

标签: php oop


【解决方案1】:

试试这个:

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

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

【讨论】:

    【解决方案2】:

    尝试使用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
    

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多