定数定義と言えば、開発言語をC言語から触ってきている身としては、やっぱり define がしっくりくるのですが…これってPHPでは関数なので、速度的には遅いらしい。
とは言え、PHPで速度的にシビアなものを作ることはそうそうないので、ほとんどの場合はソースの見やすさ優先で書いています。
今までは、例えばDBのカラム名を定数で列挙する場合は、
define( 'TBL_HOGE', 'hoge' );
define( 'TBL_FOO', 'foo' );
define( 'TBL_BAR', 'bar' );
のように、プレフィックスとして TBL_ を付けていました。でも、定数定義そのものをクラスにしてしまうと、一括取得もできるようになるし、見やすくもなるし、とてもベンリなのです。
class TableColumns {
const HOGE = 'hoge';
const FOO = 'foo';
const BAR = 'bar';
}
と定義しておくと、呼び出すときは
print TableColumns::HOGE;
という感じ。クラス名をグループ名っぽく付けていれば、定数が何を指しているのかがひと目でわかる!ついでに、
$ref = new ReflectionClass( 'TableColumns' );
foreach( $ref->getConstants() as $key => $val ){
......
}
とやればカラム名全てを連想配列で取得できるので、defineで定義しているときよりも使い道が広がる!・・・かも?
コメント