定数とは、単純な値の識別子(名前)です。名前が示すように、スクリプトの実行中に値を変更することはできません (定数ではない、いわゆるマジック定数を除く)。定数はデフォルトで大文字と小文字が区別されます。慣例により、定数識別子は常に大文字です。
定数名は、他の PHP タグと同じ命名規則に従います。有効な定数名は文字またはアンダースコアで始まり、その後に任意の文字、数字、またはアンダースコアが続きます。正規表現は次のように表されます: [a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*
正当な定数名と不正な定数名
// 正当な定数名
define("w3sky", "something");
define("w3sky2", "something else");
define("w3sky_BAR", "something more")
// 不正な定数名
define("2w3sky ", "something");
// これは有効ですが、避けるべきです:
// PHP はいつか魔法の定数を提供するかもしれません
// それはあなたのスクリプトを壊すでしょう
define("__w3sky__" , "something" );
?>
注: ここでの文字は、a ~ z、A ~ Z、および 127 ~ 255 (0x7f ~ 0xff) の ASCII 文字です。
スーパーグローバルと同様に、定数のスコープはグローバルです。定数は、スコープに関係なく、スクリプト内のどこからでもアクセスできます。関数の詳細については、変数スコープのマニュアルを参照してください。
構文
define() 関数を使用して定数を定義できます。定数を一度定義すると、変更したり定義を解除したりすることはできません。
定数にはスカラー データ (ブール、整数、浮動小数点、文字列) のみを含めることができます。
名前を指定するだけで定数の値を取得できます。定数の前に $ 記号を追加しないでください。定数名が動的である場合、関数
constant() を使用して定数の値を読み取ることもできます。 get_define_constants() を使用して、定義されているすべての定数のリストを取得します。
注: 定数と (グローバル) 変数は異なる名前空間にあります。これは、たとえば TRUE と $TRUE が異なることを意味します。
未定義の定数が使用される場合、PHP は、文字列で呼び出すかのように、必要なのは定数自体の名前であると想定します (CONSTANT は「CONSTANT」に対応します)。 E_NOTICE レベルのエラーが発行されます。 $w3sky[bar] が間違っている理由についてはマニュアルを参照してください (bar が事前にdefine() で定数として定義されている場合を除く)。特定の定数が定義されているかどうかだけを確認したい場合は、define() 関数を使用します。
定数は変数とは異なります:
* 定数の前にドル記号 ($) はありません。
* 定数は代入ステートメントではなく、define() 関数でのみ定義できます。変数スコープの規則に関係なく、ローカル定義とアクセスが可能です。
* 一度定義された定数は、再定義または未定義にすることはできません。
* 定数の値はスカラーのみです。