🐖
PHP8 基礎 定数を学び直してみた
定数とは
入れ物と中身がワンセットになっていて、途中で中身を変更できないデータの入れ物を定数という。[1]マジックナンバー対策として用いる。
定数を使わないデメリット
定数を使わない例
$price = 1000;
$sum = $price * 1.1;
echo #sum;
-
値の意味が曖昧である
「1,1」はだれにとっても理解できる値ではない。
コードが複雑であれば1,1が値上げ率を表すのか、税率なのか、サービス料金を表すのか汲み取りにくくなる。 -
値の修正に弱い
将来的に、消費税が12%,15%と変化したときにもし
1,1という値を様々なファイルで使用していたら修正が大変になる。
定数を使う例
<?php
// TAX = 消費税率
const TAX = 1.1; // define('TAX',1.1)でも可
$price = 1000;
$sum = $price * TAX;
echo $sum;
$price = 2000;
$sum = $price * TAX;
echo $sum;
?>
定数を用いることで、上記のような複数個所で税込み価格を計算する場合でも、TAXの値を修正するだけで消費税率変更に対応できる。
定数のルール
- 名前の先頭に $をつけない
- good :
const TAX
- bad :
const $TAX
- すべて大文字で命名して単語は_で区切る
- good :
PAY_TAX
- bad :
payTax, pay_tax
- 整数、少数、文字列、true or false, NULL のみ入れられる。
- good :
const TAX = 1.1
- bad :
const TAX = function hogefunc(){return};
PHPの定義済み定数
FILE | DIR | LINE | FUNCTION | CLASS | METHOD | TRAIT NAMESPASE | PHP_VERSION |
---|---|---|---|---|---|---|---|
実行中のファイル名(ディレクトリ込み) | 実行中のファイルが存在するフォルダー(ディレクトリ込み) | 実行中の行数 | 実行中の関数名 | 実行中のクラス名(名前空間を含む) | 実行中のメソッド名 | 実行中のトレイト名 | 現在の名前空間 |
ふりかえり
- 定数 途中で中身を変更できないデータの入れ物
- 定数を使うことで他社が意味を類推しやすく、修正にも強いコードが書ける。
- 定数は const HOGE または define('HOGE', 'foga')で定義できる。
- 定数は整数、少数、文字、(true,false,null)のみ代入できる。
- 定数名は大文字かつ単語を_区切りで命名する。
- PHPでは定義済み定数が用意されているので適宜用いると良い。
-
マジックナンバー 自分以外の人間にとって理解しづらい値のこと ↩︎
Discussion