今まで使っていなかったので知りませんでしたが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"
}