クラス内で定義した定数の一覧を得る方法

<?php

class Foo {
    const BAR = 1;
    const BAZ = 2;
}

get_defined_constantsを使えば全ての定数が取れると思いきや、上記のようなクラス内で定義した定数は取れなかった。

どうやったら取れるのか。PHPお得意の大量の関数の中に一覧取れるヤツが必ずあるはず!と思いきや、なかった。

諦めかけたその時、ReflectionClassというクラスを使えば取れることがわかったのだ!

<?php

class Foo {
    const BAR = 1;
    const BAZ = 2;
}
$reflect = new ReflectionClass('Foo');
print_r( $reflect->getConstants() );
$ php test.php
Array
(
    [BAR] => 1
    [BAZ] => 2
)

PHP5になってから、PHPさんは関数からの脱却を図っている模様だ。

目的のものが標準関数に存在しなかったら、標準クラスを調べてみようというお話でした。