🐖

PHP8 基礎 定数を学び直してみた

2022/10/18に公開

定数とは

入れ物と中身がワンセットになっていて、途中で中身を変更できないデータの入れ物を定数という。[1]マジックナンバー対策として用いる。

定数を使わないデメリット

定数を使わない例
$price = 1000;
$sum = $price * 1.1;
echo #sum;
  1. 値の意味が曖昧である
    「1,1」はだれにとっても理解できる値ではない。
    コードが複雑であれば1,1が値上げ率を表すのか、税率なのか、サービス料金を表すのか汲み取りにくくなる。

  2. 値の修正に弱い
    将来的に、消費税が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の値を修正するだけで消費税率変更に対応できる。

定数のルール

  1. 名前の先頭に $をつけない
  • good : const TAX
  • bad : const $TAX
  1. すべて大文字で命名して単語は_で区切る
  • good : PAY_TAX
  • bad : payTax, pay_tax
  1. 整数、少数、文字列、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では定義済み定数が用意されているので適宜用いると良い。
脚注
  1. マジックナンバー 自分以外の人間にとって理解しづらい値のこと ↩︎

Discussion