例えば、下記のような定数を宣言していたとします。
<?php
const PRE_HOGE = 'hogehoge';
const HOGE = 'piyopiyo';
これを、フラグを基に
true
だったら
PRE_HOGE
を、
false
だったら
HOGE
を出力させたい、という感じのことをやろうとしました。
まず、愚直に考えると以下のようになるかと思います。
<?php
$flag = ture; //or false
$str = '';
if($flag) {
$str = PRE_HOGE;
}
else {
$str = HOGE;
}
echo $str;
……長い。1つだけであればこれでもまあ良いか、と妥協するところですが、今回はこのパターンが5個くらい(しかも全て同じプレフィックス)続いたので、もうちょっと行数を削減できないかと工夫したくなりました。
そこで、最終的に下記のようにしました。
<?php
$prefix = $flag ? 'PRE_' : ''; //三項演算子でtrueならば`PRE_`、falseならば空文字列を変数にセット
echo constant($prefix.'HOGE'); //'HOGE'という文字列の前に上でセットしたプレフィックスを繋ぎ、その文字列で宣言された定数の値をconstantで返す
すごくスッキリしました!
ちなみに変数の場合は下記のような感じになるようです。
<?php
$prefix = $flag ? 'PRE_' : ''; //上と同じ
echo ${($prefix.'HOGE')};
うーん、後で忘れそうな気もしますが、すごくスッキリ書けるので採用。
参考