创建一个类的所有常量的数组?

4

我曾与一个类一起工作,其中定义了近20个常量,由于我想将所有这些常量的值都放在一个数组中,我只是想知道

是否有一种方法可以创建一个类的所有常量的数组?

我尝试使用compact,但它无法处理常量。

class Alpha
{
 const ONE = 'fixone'; 
 const TWO = 'fix_two';
 const THREE = 3     

   public function __construct()
   {
     protected $arr_constant = compact(ONE,TWO,THREE); // gives FATAL Error
     // is there any method which collect all consant and create an array?
     protected $arr_contact = get_all_constant(__CLASS__); 
     var_dump($arr_constant);
   }
}

可能是Can I get CONST's defined on a PHP class?的重复。 - deceze
2个回答

4
$ref = new ReflectionClass('Alpha');
var_dump($ref->getConstants());

ReflectionClass 在 PHP 5+ 中是内置的还是默认库? - xkeshav
+1,它完美地工作了。我在构造函数中调用了$ref = new ReflectionClass(__CLASS__); - xkeshav
文档中提到:“此函数目前未记录,仅其参数列表可用。” 我可以在实际项目中使用它吗?还是有可能会被弃用? - xkeshav
1
它已经存在了相当长的时间,废弃它没有太多意义,因为它很有用,我也不知道有什么替代品。所以,是的,可以使用它。只是它的文档不是很完善,因为它是一种元函数,命名方式相当自解释,如果你在使用它,应该知道自己在做什么。 - deceze

2

这给出了所有常量,而不仅仅是特定类常量。 - deceze
如果我们在Alpha类中调用这个函数,会发生什么? - xkeshav
@deceze 添加了一个类常量的链接。 - Ariel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接