0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHP で定数を使ってみる

Posted at

##PHPで定数を使ってみた

ちなみに定数とは

const キーワードか、 define() 関数を使うことで、定数を宣言することが出来ます。 define() を使えば任意の式を使って定数を定義できますが、 const キーワードを使う場合には、 次の段落で説明する制約があります。 定数が一度定義されると、 変更または未定義とすることはできません。

https://www.php.net/manual/ja/language.constants.syntax.php

みなさんPHPで定数って使ってますか??
私は古いシステムを修正することが多いのですが、定数を使っているプログラムは非常に少ないです。(あくまで私の偏見ですが)

私は師匠に定数は積極的に使っていけと習ったので、プログラムの先頭には定数が並んでいる場合が多いです。

DBに保存される際にINT型で保存されるけれど、画面に出力される時は日本語で表示してね、といった文言は是非定数を使ってあらかじめ定義しておきたいですね。
例)曜日、旧暦、性別など

<?php

//9月12日(日)作成

const WEEK_ARRAY = array("日","月","火","水","木","金","土");
$week = date("w");
echo WEEK_ARRAY[$week];
//日

const MONTH_ARRAY = array("","睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走");
$month = date("n");
echo MONTH_ARRAY[$month];
//長月

const GENDER_ARRAY = array("その他","男","女");
$gender = 1;
echo GENDER_ARRAY[$gender];
//男

?>

上記のような例だとほぼ変わることはありませんが
例えば業務システムのステータスなどは仕様変更などで文言が変わることはよくある話だと思います。
仕様変更のたびに条件式を書いてある部分を探し出して書き直すといったことは非常にめんどくさいので、プログラムの先頭に定数で宣言しておけば修正も楽々できますね。

例)登録状況、評価表示、通貨など

<?php

const REGIST_STATUS_ARRAY = array("未登録","仮登録","登録済","退会済");
$register = 1;
echo REGIST_STATUS_ARRAY[$register];
//仮登録

const EVAL_STATUS_ARRAY = array("","GOOD","NICE","GREAT","EXCELLENT");
$evaluation = 3;
echo EVAL_STATUS_ARRAY[$evaluation];
//GREAT

const MONNEY_TYPE_ARRAY = array("円","ドル","ウォン","","","");
$monney_type = 0;
echo MONNEY_TYPE_ARRAY[$monney_type];
//円

?>

これらはよく仕様変更や追加項目がありそうな部類だと思いますが、こうして定数でまとめておけば急な仕様変更や追加項目があっても対応が早そうですね♪

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?