(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
constant — 定数の値を返す
name で指定した定数の値を返します。
constant() はある定数の値を取得する必要があるが、 その名前が不明な場合に有用です。つまり、定数名が変数に保存されているか、 関数から返される場合に有用です。
name定数名。
注意:
constant() は名前を通常の文字列として受け取り、 現在の名前空間を基準に 解決することはありません。 名前はグローバル名前空間から探されます。 そのため非修飾名を渡すと、同じ名前を識別子としてそのまま書いた場合に 参照される定数ではなく、グローバル名前空間にある同名の定数の値が 黙って返されることがあります。 名前空間の中で宣言された定数の値を取得するには、
constant('My\Namespace\MYCONST')やconstant(__NAMESPACE__ . '\MYCONST')のように、 名前空間を名前の一部に含める必要があります。 名前は単なる文字列なので、use文で導入したエイリアスやnamespace\プレフィックスは適用されません。 ダブルクォートで囲んだ文字列の中では、"My\\Namespace\\MYCONST"のように 名前空間区切り文字をエスケープする必要があります。 名前のうち名前空間の部分は大文字小文字を区別しませんが、定数名は区別します。
定数の値を返します。
| バージョン | 説明 |
|---|---|
| 8.0.0 |
定数が定義されていない場合は、
constant() は
Error をスローするようになりました。
これより前のバージョンでは、
E_WARNING
レベルの警告が発生し、null を返していました。
|
例1 定数に対して constant() を使う例
<?php
define("MAXSIZE", 100);
echo MAXSIZE;
echo constant("MAXSIZE"); // same thing as the previous line
interface bar {
const test = 'foobar!';
}
class foo {
const test = 'foobar!';
}
$const = 'test';
var_dump(constant('bar::'. $const)); // string(7) "foobar!"
var_dump(constant('foo::'. $const)); // string(7) "foobar!"
?>例2 列挙型の case に constant() を使う例(PHP 8.1.0 以降)
<?php
enum Suit
{
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}
$case = 'Hearts';
var_dump(constant('Suit::'. $case)); // enum(Suit::Hearts)
?>