Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

PHPでクラス定数の一覧を取得する

PHP5限定ですが、Reflectionでどうでしょうか?


get_defined_constants()やget_class_vars()などでは取得できないので、、無理っぽい。

以下、サンプルです。

$ cat Reflection_getConstants.php
<?php
class Test
{
    const HOGE = 1;
    public $hoge = 2;
}
$class = new ReflectionClass('Test');
var_dump($class->getConstants());


$class = new ReflectionClass('DateTime');
var_dump($class->getConstants());
$ 
$ php Reflection_getConstants.php
array(1) {
  ["HOGE"]=>
  int(1)
}
array(12) {
  ["ATOM"]=>
  string(13) "Y-m-d\TH:i:sP"
  ["COOKIE"]=>
  string(16) "l, d-M-y H:i:s T"
  ["ISO8601"]=>
  string(13) "Y-m-d\TH:i:sO"
  ["RFC822"]=>
  string(16) "D, d M y H:i:s O"
  ["RFC850"]=>
  string(16) "l, d-M-y H:i:s T"
  ["RFC1036"]=>
  string(16) "D, d M y H:i:s O"
  ["RFC1123"]=>
  string(16) "D, d M Y H:i:s O"
  ["RFC2822"]=>
  string(16) "D, d M Y H:i:s O"
  ["RFC3339"]=>
  string(13) "Y-m-d\TH:i:sP"
  ["RSS"]=>
  string(16) "D, d M Y H:i:s O"
  ["W3C"]=>
  string(13) "Y-m-d\TH:i:sP"
  ["NUM14"]=>
  string(6) "YmdHis"
}
$ 

そういう話ではなかったら、ごめんなさいw