第2章 定数と変数の型変換

2.1 値を変えられない変数を定める

プログラムでデータを変数に入れて扱いますが、そのまま保持しておきたい値なのに間違えて変更してしまい問題になることがあります。そのような場合に、1度入れたら変更できない入れ物「定数」に値を入れておくと間違いを防ぐ事ができます。

2.1.1 定数について知っておこう

これまでの学習でデータの入れ物の変数は、中のデータを変化させることができるので変数と呼ばれていました。逆に、定数は「定まった数」を扱うため、1度データを入れたら変更できない入れ物となります。
定数はプログラムの中で使用するデータのうち、最初に値を決めたらその後は変更することがないような場合に利用するのに適しています。例えば、画面に表示する固定の文字列や、ファイルの入出力位置などがあります。
変数を使ってデータを扱っても構いませんが、間違って変更してしまう可能性があるため、そのようなことにならないよう定数を利用すると安全です。

変数と定数の違いを簡潔にまとめると以下通りです。

  • 変数はデータの出し入れを何度でも自由に行える。
  • 定数はデータを1度のみ入れられ変更はできない。


図 2.1.1:変数と定数の違い

定数にも変数と同じように名前を付けて利用します。命名規則は変数とほとんど同じですが、先頭には「$」を付けないことが唯一違う点になります。

定数の命名規則
  • 変数と違い「$(半角ドル)」は先頭に付けない。
  • 使用できる文字は「半角英数字」と「_(アンダーバー)」のみ利用できる。
  • 先頭文字に「数字」は利用できない。
  • 英字の大文字、小文字は「区別される」ので、1文字でも違えば同じ単語名でも利用できる。

命名規則ではありませんが、定数と変数を区別するために名前は全て大文字で付ける事が多いです。

2.1.2 定数を使ってみよう

定数をプログラムで利用するための手順を紹介していきます。定数を作成するには「define関数」を利用しておこないます。

書式:定数の作成

定数名は文字列で指定するため、「’ ‘」または「” “」で囲って作成します。定数の値に使用できるのは「論理型」、「整数型」、「浮動小数点型」、「文字列型」の4つのみになります。

凡例:定数の作成

定数の宣言時には定数名は文字列の囲みで指定しますが、定数を使う場合は文字列囲みなしで使用します。

凡例の実行結果は「最高点は100です。」「最低点は0です。」と表示されます。定数でも変数と同じように扱って中のデータを参照することができます。

定数を利用するプログラム

定数に円周率の3.14を用意して、別の画面からの入力データの半径を元に円の面積を求めた結果をWeb画面に表示して確認します。

ソース・フォルダー: myproj_basic/ch02
パッケージ: constForm.php
アクセスURL:http://localhost/myproj_basic/ch02/constForm.php

constForm.php

ソース・フォルダー: myproj_basic/ch02
パッケージ: useConst.php
アクセスURL:constForm.phpからの画面遷移でアクセスされる

useConst.php

実行結果

解説

今回のプログラムは、データを入力するWeb画面の「constForm.php」と、その画面からのデータ受け取り先の「useConst.php」の2つのファイルから構成されています。解説は定数を扱う「useConst.php」に関して行っていきます。
2行目で今回のポイントである定数を、define関数を利用して「PI」に「3.14」の値を設定しています。


図 2.1.2:定数PIの宣言

4行目ではconstForm.phpからの入力データの値を$_POSTで取得して、変数$radiusに代入しています。

6行目では「変数$radius」の値と、「定数PI」の値を参照して円の面積を求めて変数$areaに代入しています。


図 2.1.3:円の面積の計算

13行目の処理でHTML文章内にショートタグを利用して、変数$radiusと$areaの結果を出力しています。実行結果からも確認できますが、画面に入力した半径の数値「4」と円の面積「50.24」が正しく表示されています。

今回のプログラム内容にはありませんでしたが、以下の図2.1.4のソースコード6行目のように定数に値を代入しようとするとエラーになり、定数には値を再代入できないことを試してみて下さい。


図 2.1.4:定数には値の再代入はできない

定数の別の宣言方法

PHPのVerが5.3.0以降ならば「const」キーワードを利用して、定数を宣言することができます。
const 定数名 = 定数の値; //定数名は文字列囲みの必要はない

2.1.3 特別な定数について

変数に特別なスーパーグローバル変数があったように、定数にも特別な「マジック定数」と呼ばれる定数が自動的に用意されています。
主なマジック定数を以下の表2.1.1に示します。

表 2.1.1:主なマジック定数

マジック定数の名前の前後には「_(アンダーバー)」と呼ばれる横棒を2つ並べています。上記の表で示したもの以外にも、PHPのVerで使えるマジック定数が増えていますので、公式ページを参照してくみてください。

マジック定数を利用するプログラム

マジック定数を利用してファイルの絶対パスと行番号を、Web画面に表示して確認します。

ソース・フォルダー: myproj_basic/ch02
パッケージ: useMagicConst.php
アクセスURL:http://localhost/myproj_basic/ch02/useMagicConst.php

useMagicConst.php

実行結果

解説

今回のプログラムのポイントはマジック定数を使って実行ファイルの情報を表示することです。

2行目ではマジック定数「_ _FILE_ _ 」を使って「useMagicConst.php」の絶対パスを取得し、変数$filePathへ代入しています。

10行目で2行目で取得した値をショートタグを使って表示しています。実行結果からも分かりますが、今回作成した「useMagicConst.php」ファイルの場所情報が正しく表示されています。

11行目ではマジック定数「_ _LINE_ _ 」の結果を、そのままショートタグを使って表示しています。この処理は11行目に記述しているので、実行結果にも「11」行目ですと正しく表示されているのが確認できます。

マジック定数はそれほど頻繁に使うことはありませんが、このような特殊な定数もあることを覚えておいてください。

ポイント
  • 定数とは1度データを代入すると、それ以降変更できない変数のことです。
  • マジック定数とはPHPが初めから用意している、特別な情報を取得できる定数です。

NEXT>> 2.2 変数の型を変化させる