我试图直接从类中的静态属性调用函数。
这是我的课的摘录:
class Uuid {
const VERSION_3 = 3;
const VERSION_5 = 5;
protected static $hash_function = [
self::VERSION_3 => 'md5',
self::VERSION_5 => 'sha1',
];
protected static function get_hash_value($value_to_hash, $version) {
// None of these work:
//$hash = self::$hash_function[$version]($value_to_hash);
//$hash = (self::$hash_function[$version])($value_to_hash);
//$hash = (self::$hash_function)[$version]($value_to_hash);
// Only this works:
$function = self::$hash_function[$version];
$hash = $function($value_to_hash);
return $hash;
}
}
到目前为止,我发现使其工作的唯一方法是$function
在调用之前将函数名存储在临时变量 ( ) 中。我已经尝试将表达式(或表达式的位)包装在大括号中,({
, }
),括号((
, )
),前缀 a$
等,但到目前为止没有任何效果。
有没有一种简单的方法可以在没有临时变量的情况下做到这一点?如果是这样,它适用于的最低 PHP 版本是多少?