【PHP】定数の使い方 – 優秀なエンジニアが定数を使う理由・メリットも合わせて解説

特定の値に名前を与えたものを定数と呼びます。

定数は同じ意味の値を使うプログラムでは強力な記述方法となります。

ここでは定数と使い方、メリットについて解説します。

★ 目的

  • 定数を使えるようになる。
  • 定数のメリット(使いどころ)を理解する。

定数とは

定数とは特定の値に名前を与えたもののことです。

そして、一度名前を与えると、同じ名前に違う値を紐づけることはできなくなります。

定数定義の構文

定数を使用するには定義する必要があります。

構文は次のようになります。

define('定数名', 定数の値)

define関数を使用した定数の定義ですが、関数をご存知でない方は書き方だけ覚えましょう。

定数の使用例

定数は定義した後、プログラム中で使用できます。

例として、とある商品の消費税を計算するプログラムを見ていきましょう。

ソースコード

<?php

// 消費税率10%の定数を定義
define('TAX', 0.1);

// 商品1の価格
$item1_price = 1000;
// 商品1の消費税を計算
$item1_tax = $item1_price * TAX;
// 商品の消費税を出力
echo '商品1('.$item1_price.'円)の消費税は'.$item1_tax."円です。\n";

// 商品2の価格
$item2_price = 3000;
// 商品2の消費税を計算
$item2_tax = $item2_price * TAX;
// 商品の消費税を出力
echo '商品2('.$item2_price.'円)の消費税は'.$item2_tax."円です。\n";

?>

実行結果

商品1(1000円)の消費税は100円です。
商品2(3000円)の消費税は300円です。

4行目でdefine関数で消費税率を示すTAXを定義しています。

そして、定数TAXを使用して、9行目と16行目で商品1と2の消費税を計算しています。

このように定義した後は、その名前を記述することで変数のように使用することができます。

定数の注意点

定数は1度定義すると、違う値に同じ名前をつけることはできなくなります。

特定の値を一定に保つことを保証するためで、実際に同じ名前を使用するとエラーになります。

ソースコード

define('TAX', 0.1);
define('TAX', 0.08);

実行結果

PHP Warning:  Constant TAX already defined in .....

定数を利用するメリット

定数はプログラムの安定性を得るためにとても優れています。

先程の消費税計算プログラムでは定数を利用するメリットが少し分かりづらいかもしれません。定数を使用せず、商品価格に0.1を掛け算しても変わらないと思った方もいらっしゃるかもしれません。

確かに定数は数値などを直接記述してもプログラムの動作が変わることはありません。

しかし、消費税率が変更されたらどうでしょうか?

直接、ソースコードに0.1と記述した場合、0.1の部分を全て書き換える必要があります。
これが定数を利用した場合は定数の定義だけを変更すれば良いのです。

例えば消費税率が5%になった場合は次のようになります。

ソースコード

<?php

// 消費税率5%の定数を定義
define('TAX', 0.05);

// 商品1の価格
$item1_price = 1000;
// 商品1の消費税を計算
$item1_tax = $item1_price * TAX;
// 商品の消費税を出力
echo '商品1('.$item1_price.'円)の消費税は'.$item1_tax."円です。\n";

// 商品2の価格
$item2_price = 3000;
// 商品2の消費税を計算
$item2_tax = $item2_price * TAX;
// 商品の消費税を出力
echo '商品2('.$item2_price.'円)の消費税は'.$item2_tax."円です。\n";

?>

実行結果

商品1(1000円)の消費税は50円です。
商品2(3000円)の消費税は150円です。

4行目の定数の値を変更するだけで、消費税がちゃんと計算されています。

これが定数を利用せず記述していて、商品数が1万個あった場合などを考えると、、、変更にかかる手間が大きく変わります。

また、1度定義した定数は、以降のプログラムで再定義はできないため、間違えて上書きしてしまうなどの心配もありませんし、定数名を分かりやすく定義することでソースコードの可読性を向上させることもできます。

まとめ

定数は特定の値に名前を付けて定義する方法です。プログラムの仕様に変更があった場合にとても強力な書き方になるので覚えていきましょう。