(PHP 4, PHP 5, PHP 7, PHP 8)
define — 名前を指定して定数を定義する
実行時に、名前を指定して定数を定義します。
constant_name
定数の名前。
注意:
予約語や無効な名前を使っていても、定数を define() できてしまいます。これらの値はを取得するには、 constant() 関数を使うこと(だけ)しかできません。 しかしながら、こういったことをするのは推奨されません。
value
定数の値。PHP 5 では、value
は
スカラー値 (int、
float、string、bool あるいは
null
) でなければいけません。PHP 7 では配列を使うこともできます。
リソース型の定数を定義することもできますが、 推奨できません。予期せぬ振る舞いをする可能性があります。
case_insensitive
true
を指定すると、定数は大文字小文字を区別しないようになります。
デフォルトでは大文字小文字を区別します。つまり
CONSTANT
と Constant
は別の値を表すわけです。
大文字小文字を区別しない定数を定義するのは、 PHP 7.3.0 以降では推奨されなくなりました。
PHP 8.0.0 以降では、false
のみを受け入れます。
true
を渡すと、警告が発生します。
注意:
大文字小文字を区別しないときは、定数は小文字で格納されます。
成功した場合に true
を、失敗した場合に false
を返します。
バージョン | 説明 |
---|---|
8.0.0 |
case_insensitive
に true を渡すと、
E_WARNING が発生するようになりました。
false を渡すことはまだ許可されています。
|
7.3.0 |
case_insensitive は非推奨になりました。
8.0.0 で削除される予定です。
|
7.0.0 | array が使えるようになりました。 |
例1 定数の定義
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // "Hello world." を出力します
echo Constant; // "Constant" を出力し、警告が発生します
define("GREETING", "Hello you.", true);
echo GREETING; // "Hello you." を出力します
echo Greeting; // "Hello you." を出力します
// PHP 7 以降で動作します
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // "cat" を出力します
?>
例2 予約された名前を定数にする
マジック定数 と同じ名前の定数を定義できる 可能性 を示します。 しかしながら、結果として起きる振る舞いは明らかに混乱を招くため、 こんなことを実際にすることは推奨されません。
<?php
var_dump(defined('__LINE__'));
var_dump(define('__LINE__', 'test'));
var_dump(constant('__LINE__'));
var_dump(__LINE__);
?>
上の例の出力は以下となります。
bool(false) bool(true) string(4) "test" int(5)