Php/docs/function.define

提供:Dev Guides
< Php
移動先:案内検索

define

(PHP 4, PHP 5, PHP 7)

define名前を指定して定数を定義する


説明

define ( string $name , mixed $value [, bool $case_insensitive = false ] ) : bool

実行時に、名前を指定して定数を定義します。


パラメータ

name

定数の名前。

注意:

予約語や無効な名前を使っていても、定数を define() できてしまいます。これらの値はを取得するには、 constant() 関数を使うこと(だけ)しかできません。 しかしながら、こういったことをするのは推奨されません。

value

定数の値。PHP 5 では、value は スカラー値 (intfloatstringbool あるいは null) でなければいけません。PHP 7 では配列を使うこともできます。

警告

リソース型の定数を定義することもできますが、 推奨できません。予期せぬ振る舞いをする可能性があります。

case_insensitive

true を指定すると、定数は大文字小文字を区別しないようになります。 デフォルトでは大文字小文字を区別します。つまり CONSTANTConstant は別の値を表すわけです。

警告

大文字小文字を区別する定数を定義するのは、 PHP 7.3.0 以降では推奨されなくなりました。

注意:

大文字小文字を区別しないときは、定数は小文字で格納されます。


返り値

成功した場合に true を、失敗した場合に false を返します。


変更履歴

バージョン 説明
7.3.0 case_insensitive は非推奨になりました。

8.0.0 で削除される予定です。

7.0.0 array が使えるようになりました。


例1 定数の定義

<?phpdefine("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 予約された名前を定数にする

マジック定数 と同じ名前の定数を定義できる 可能性 を示します。 しかしながら、結果として起きる振る舞いは明らかに混乱を招くため、 こんなことを実際にすることは推奨されません。


<?phpvar_dump(defined('__LINE__'));var_dump(define('__LINE__', 'test'));var_dump(constant('__LINE__'));var_dump(__LINE__);?>

上の例の出力は以下となります。


bool(false)
bool(true)
string(4) "test"
int(5)

参考

  • defined() - 指定した名前の定数が存在するかどうかを調べる
  • constant() - 定数の値を返す
  • 定数の節