PHPの定数と変数【PHP入門】

目次

変数と定数

どちらもデータの入れ物のことです。
変数は中身を入れ替えることができるが、定数は固定という違いがあります。

変数

中身を入れ替えることのできる入れ物です。
PHPでは型を事前に決める必要はありません。
入れたデータによって自動で型が変わります。

変数の宣言と値の代入

以下のように行います。

<?php
$message='Hello World!';
echo $message;
------------------
Hello World!

宣言されていない変数を使用しようとするとエラーになります。

<?php
echo $message;
------------------
Warning: Undefined variable $message in C:\xampp\htdocs\test\Test001.php on line 2

変数の命名

  • 先頭に「$」を付けること。
  • 「$」の次は、任意の文字か「_(アンダースコア)」であること。
     〇…$message、$_message
     ×…$1message、$123
  • 英数字、マルチバイト文字も使用可能
     〇…$メッセージa1%
    ※ただし、一般的にマルチバイト文字を変数名に使うことはありません。
     英数字、「_(アンダースコア)」だけを使いましょう。
  • 大文字、小文字は区別される
     $message ⇔ $Message は別物。
  • 予約後は使えない
    予約語とは、PHPの言語仕様上、あらかじめ意味が決められている文字列のことです。
    以下で確認が可能です。
    [PHP予約語一覧]
    https://www.php.net/manual/ja/reserved.php

上記のルールを守り、変数を見ただけで、値に何が入るのかが分かる名前を付けましょう。
PHPの変数は、キャメルケースが主流です。
(例:$memberAddress)
また、暗黙のルールとして、変数名にローマ字での命名はしません。
(例:×$namae、×$juusyo)

定数

中身のデータを入れ替えることのできない、中身固定の入れ物です。

定数を使わない例

定数は何のためにあるのか、定数を使わない例を先に見た方が分かりやすいと思います。

$price1 = 1000;
$price2 = 2000;
$priceIncludingTax1 = $price1 * 1.1;
$priceIncludingTax2 = $price2 * 1.1;

「1.1」が消費税率だと気づく人もいれば、気づかない人もいます。
このような値をマジックナンバーといい、避けるべきものです。
また、「1.1」の登場箇所が増えると、値が変更になった場合の修正も大変です。
定数を利用することで、これらを解決することができます。

定数の宣言

constを使用した定義の仕方と、difine()を使った定義の仕方があります。
どちらも定数の定義を行うものですが、利用できるケースがことなります。
以下のように行います。

constを使った定義
const TAX_RATE = 1.1;
  • constは命令文です。
  • クラス定数での宣言が可能です。
  • トップレベル以外での宣言は行えません。
  • 変数や関数の戻り値は利用できません。
define()を使った定義
define('TAX_RATE', 1.1);
  • define()は、関数です。
  • トップレベル以外での宣言が可能です。
  • 変数や関数の戻り値の利用が可能です。
  • クラス定数での宣言が行えません。
  • constと比較すると、実行速度が遅いです。

※const と define()の違いは以下記事参照
 →PHPの定数定義 const と define() の違い

定数を用いた例

以下の通り定数を用いることで、例えコメントの記載が無くても、何を行っている処理なのか明確に伝わるようになります。

<?php
const TAX_RATE = 1.1;
//define('TAX_RATE', 1.1);

$price1 = 1000;
$price2 = 2000;
$priceIncludingTax1 = $price1 * TAX_RATE;
$priceIncludingTax2 = $price2 * TAX_RATE;
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

文系の大学を卒業後、未経験でWebエンジニアとしての道を歩む。
プログラミングスクールで基礎を学び、Webエンジニアとして就職。
今ではプロジェクト経験15年以上のベテランエンジニアに。
 
今までの経験を活かし、プログラミング関連の情報や生活に役立つ情報を配信していきます。

コメント

コメントする

目次