【On to PHP】定数ってなに?

こんにちは、さるまりんです。

以前、変数ってなに?を書かせてもらいました。

今回はもう一つの入れ物の話です。

変数ふたたび

変数。これはプログラムが実行される間に何かを一時的に入れておく入れ物です。変数は入れ物の中身を実行中に入れ替えることもできます。名前に「変」って入ってますね。「変わる」ということです。変数のことを英語でvariableと言います。これは、vary(変わる)+able(できる)ですね。変数のこと「変数ってなに?」で書かせてもらうべきでした。すみません。。

では「定数」は?

プログラムの実行中に途中で中身を変えることのできない入れ物のことを定数と言います。英語ではconstantと言うのですが、これは日本語では普遍という意味です。変わらないものですね。数学や物理学などで出てくる変数と定数の定義ってもっと難しいものなんだと思いますが、ここではプログラムの実行中に変えられる入れ物を変数、変えられないものを定数と呼ばせてもらっています。

ではどんな時に定数を使うか?

円周率πは定数ですね。これは変わることありませんよね。(変わることあるんだろうか?)なのでプログラム中では定数として定義することができます。

よくプログラムを書いていて定数とするのが消費税率です。これは変わるよ。10%になるよ。とかあると思いますが、プログラム実行中はおそらく変わらないですよね。なのでこれも定数として定義します。もし、プログラム実行中に消費税率が変わるのであればそれに配慮してプログラムを書くことになりますね。どんなプログラムがそうなのか想像するのは楽しそうです。

定数の宣言

定数を含むプログラムを見てみます。

const TAX_RATE = 1.08;
$amount = 10000;
$amountWithTax = $amount * TAX_RATE;
print $amountWithTax;

このプログラムはある金額に消費税率を足してその値を表示しています。

まだ触れていないこともあるので1行ずついきますね。

1行目は消費税率の定数TAX_RATEを宣言してその値を1.08としています。定数の宣言にはconstを使います。

宣言の仕方は

const 定数名 = 値

です。

2行目は変数$amount10000という値を代入しています。

3行目は変数$amountに入っている値に定数TAX_RATEの値をかけて結果を変数$amountWithTaxに代入しています。まだ算術演算については触れていないのですが、掛け算は「*」で行います。$amount×TAX_RATEの意味です。なので$amountWithTaxnには10000×1.08で結果として10800という値が代入されます。

4行目は$amountWithTaxを出力します。printで変数$amountWithTaxの値が出力されるのですから「10800」が表示されます。

定数名について

定数名はどのようにつけるでしょうか?これは変数の時のルールとほぼ同じなのですが異なるところもあります。

1. $はいらない。

TAX_RATEをみてもらうとわかると思いますが、名前の文字列の前に$がありません。定数は$TAX_RATEではなくてTAX_RATEと書きます。

2. PHPで特別な意味をもつ単語は使えない。

例えば上のプログラムの中ではprintがそれにあたります。ですのでprintという定数は宣言することができません。

このような特別な意味を持つ単語を予約語といいます。予約語は本家のこちらに一覧がありますのでそちらを参照してください。予約語は今後触れる関数やクラスの名前としても使えません。変数は$が前につくので例えば$printという変数はルールとしては作れますが、プログラムがややこしく読みにくくなるので使わないほうがいいと思っています。

もう一つルールではないですが気にしているのが定数は全部大文字で宣言するようにしています。これはひと目でこれが定数だってわかるようにです。PHPであらかじめ定義されている定数もそのルールにしたがっています。本家にならってそうしておきましょう。あくまでルールじゃないですけどね。

変数名や定数名、他にも色々名前をつけるものがあります。そしてプログラムの書き方にもルールではないけど、「お作法」と呼ばれたりしているもの、哲学的なものも色々あります。そこに正解はないのかもしれないですが、気をつけたほうが幸せになれるものもあると思います。これらは柔軟にやっていけたらといつも思っています。いい案は取り込んでいきたいです。

読んでくださってありがとうございます。

それではまた!

Onto PHP 目次