PHPでクラスに定義された定数一覧を配列で取得する

By shin - 09/06/09 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

今まで使っていなかったので知りませんでしたがPHPにもリフレクション機能があります。

はじめに

PHP 5には完全なリフレクション APIが付属しており、 クラス、インターフェイス、関数、メソッド、そしてエクステンションについて リバースエンジニアリングを行うことができます。 さらに、このリフレクション APIは関数、クラス、メソッドに 関するドキュメントコメントも取得することができます。

これらのクラス群、APIを用いてリバースエンジニアリングなども行えるのですが、今回は、あるシステム設定を纏めてあるクラスの値をSmartyテンプレートからも参照するために、まとめてアサイン出来たらいいなと思っただけなので、下記の様に簡単な実装で実現させました。


/** 
 * システム共通設定を定義したクラス
 */
final class Config
{
    const HOGE = 'HOGE';
    const BAR  = 'BAR';

    /**
     * 定義済みの定数を配列で取得
     * 
     * @return array $constatns
     */
    public static function getConstants()
    {
        $ref = new ReflectionClass('Config');
        return $ref->getConstants();
    }
}

var_dump(Config::getConstants());

[shin@centos]$ php const.php
array(2) {
  ["HOGE"]=>
  string(4) "HOGE"
  ["BAR"]=>
  string(3) "BAR"
}