変数と定数
どちらもデータの入れ物のことです。
変数は中身を入れ替えることができるが、定数は固定という違いがあります。
変数
中身を入れ替えることのできる入れ物です。
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;
コメント