データサイエンティスト基礎講座

[PHP] 定数定義をclass化してみる

定数定義と言えば、開発言語を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で定義しているときよりも使い道が広がる!・・・かも?

スポンサーリンク

この記事をシェア

アカウントをフォロー