定数とは?
定数とはかんたんに言うと「データの変更・上書きができない変数」のようなものです。
他の記事で変数の説明があるので参考までに。
厳密にいうと変数とは使い方もちょっと違うのですが考え方としては上書きができない変数と今は覚えておいてください。
定数の宣言と定義
定数の宣言と定義はこのようにします。
(変数の場合は入れ物の中身を変更できるので最初に初期化しましたが、定数の場合は中身の変更ができないので初期化ではなく定義と呼んでいます)
const COLOR1 = "青"; //定数の宣言と定義
変数との違いをちょっと見てみましょう
<?php
const COLOR1 = "青"; //定数の宣言と定義
$COLOR2 = "赤"; //変数の初期化
print COLOR1;
print $COLOR2;
?>
宣言が必要なのと$がつかない点においては変数とそっくりですね
定数は上書きできない!
最初に宣言と定義をした定数はその後使用はできますが、変更はできません。
以下のコードはエラーとなります
const PRICE = 100 * 100;
PRICE = 99; //変更はできない!
定数の命名規則・ルール
const COLOR1 = "青"; //定数の宣言と定義
$はいらない
変数と違って名前に$をつける必要がありません
宣言と定義を同時に
変数は最初に宣言は必要ありませんでしたが、定数はconstをつけた宣言が必要になります。
また、変数のように値の変更はできませんので同時に値の代入(定義)を行います。
宣言の際は大文字で
必須ではありませんが、暗黙のルールとして大文字で使用するのが通常です。
定数を大文字で扱うというのはプログラミング言語の世界共通の暗黙ルールだったりします。
定数の使い方の例
正しい使い方
値の代入には文字列や整数、浮動小数点はもちろん。
演算結果や配列の代入などもできます。
const COLOR = "赤";
const PRICE = 100 * 100;
const DISTANCE = 1.234;
const ARRAY1 = array("①", "②");
間違った使い方
定数は定義後に上書きはできません。
const COLOR1 = "青"; //定数の宣言と定義
COLOR1 = "赤"; //上書きはダメ
PHPで定義済みの定数
自分で作成する変数だけでなくPHPには最初から用意されているどこからでも参照できる定数があります。
例)__FILE__
例)__CLASS__
例)PHP_EOL
こちらの記事にまとめてありますので参考にしてみてください。
おまけ
constとdefine
constはPHP5.3から導入されています。それまではdefineという命令が使われていました。
<?php
define("COLOR2", "赤"); //変数の初期化
print COLOR2;
?>
基本同じことができますが、defineの一番のメリットは関数なので手書きではなく動的に変数名と値を設定できるということです。
for($i=1; $i<=3; ++$i){
define("COLOR{$i}", "{$i}番目の色");
}
print COLOR1;
print COLOR2;
print COLOR3;
使いどころはありそうです。
コメント