【PHP入門】define と defined の違いと使い方 | 定数の宣言と確認

php-define

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、PHPの define と defined の違いと使い方について解説して行きます。

ちなみに先に結論から言うと、define()は定数を宣言するためのメソッドで、defined()は定数の存在をCheckするメソッドです。

define()で定数を定義する

phpでは、const構文とdefine()のどちらかで定数を定義することができます。

今回は、define()を使った定数の定義と、defined()を使った確認についてみて行きます。

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

define(string $constant_namemixed $value, bool $case_insensitive = false): bool

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

[ パラメータ ]

1. constant_name

定数の名前

2. value

定数の値です。

PHP 5 では、value は スカラー値 (int、 float、string、bool あるいは null) でなければいけません。

PHP 7 では配列を使うこともできます。

3. case_insensitive

true を指定すると、定数は大文字小文字を区別しないようになります。

デフォルトでは大文字小文字を区別します。

つまり CONSTANT と Constant は別の値を表すわけです。

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

PHP 8.0.0 以降では、false のみを受け入れます。 true を渡すと、警告が発生します。

定数の名前

[ 戻り値 ]

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

PHP-Manual: define
<?php

// [ 定数の定義方法 define編 ]

// 1. 基本構文は、define(定数名, Setする値) です。
define('CONST_NAME', '定数');
// 定数名は、文字列として定義します。

// 2. 定数を参照する際は、「$」やクオーテーションで囲まず、そのまま定数名を記述する。
echo CONST_NAME;
// < 出力結果 > 
// 定数

defined()で定数が宣言されているのかを確認する

defined(定数名) で定数の存在を確認できます。返り値は真偽値です。

defined — 指定した名前の定数が存在するかどうかを調べる

defined(string $constant_name): bool

指定した定数が存在し、定義されているかどうかを調べます。

[ パラメータ ]

constant_name

定数名

[ 戻り値 ]

constant_name で指定した名前の定数が定義されている 場合に true、その他の場合にfalseを返します。

引用元: PHP-Manual: defined
<?php

// [ defined()で定数の存在を確認 ]

define('ROBOTAMA', 'ロボ玉');

// 1. defined(定数名) で定数の存在を確認できる。返り値は真偽値。
$define_check = defined('ROBOTAMA');

// 2. PHPの真偽値は、出力すると「 1 / '' 」になるので、三項演算子で「 true / false 」に変換。
echo $define_check ? 'true' : 'false';
echo "\n";
// < 出力結果 > 
// true

配列の定数を定義する

<?php

// [ 配列の定数を定義する ]

define('ROBOTAMA_PRPTOTYPE', [
    'ロボ玉試作1号機',
    'ロボ玉試作2号機',
    'ロボ玉試作3号機'
]);

echo '最初に開発されたロボ玉は、' . ROBOTAMA_PRPTOTYPE[0] . 'です'. "\n";
// < 出力結果 > 
// 最初に開発されたロボ玉は、ロボ玉試作1号機です

define('ROBOTAMA_PRPTOTYPE_PRICE', [
    'ロボ玉試作1号機' => 1000,
    'ロボ玉試作2号機' => 2000,
    'ロボ玉試作3号機' => 3000
]);

foreach (ROBOTAMA_PRPTOTYPE_PRICE as $key => $value){
    echo "{$key}のお値段は、{$value}円です!今がお買い得!". "\n";
}
// < 出力結果 > 
// ロボ玉試作1号機のお値段は、1000円です!今がお買い得!
// ロボ玉試作2号機のお値段は、2000円です!今がお買い得!
// ロボ玉試作3号機のお値段は、3000円です!今がお買い得!

定数の「定義/未定義」を確認する関数を作成

<?php

// [ 定数の「定義/未定義」を確認する関数を作成 ]

define('ROBOTAMA', 'ロボ玉');

define('FROM', 'グンマー帝国');

// 定数の「定義/未定義」Check-Function
function DefineCheck (string $val) {
    if (defined($val)){
        echo '定義済み' . "\n";
    } else {
        echo '未定義' . "\n";
    }
}

$const_key_check_list = [
    'ROBOTAMA',
    'HAKUTOU',
    'FROM',
    'MOMO'
];

foreach ($const_key_check_list as $val) {
    DefineCheck($val);
}

// < 出力結果 > 
// 定義済み
// 未定義
// 定義済み
// 未定義

Sample-Code-全文

<?php

// [ 定数の定義方法 define編 ]

// 1. 基本構文は、define(定数名, Setする値) です。
define('CONST_NAME', '定数');
// 定数名は、文字列として定義します。

// 2. 定数を参照する際は、「$」やクオーテーションで囲まず、そのまま定数名を記述する。
echo CONST_NAME;
// 定数

define('FROM', 'グンマー帝国');

$robotama = 'ロボ玉';

echo "{$robotama}の出身地は、" . FROM . "\n";
// ロボ玉の出身地は、グンマー帝国


// [ defined()で定数の存在を確認 ]

define('ROBOTAMA', 'ロボ玉');

$define_check = defined('ROBOTAMA');

echo $define_check ? 'true' : 'false';
echo "\n";
// true


// [ 配列の定数を定義する ]

define('ROBOTAMA_PRPTOTYPE', [
    'ロボ玉試作1号機',
    'ロボ玉試作2号機',
    'ロボ玉試作3号機'
]);

echo '最初に開発されたロボ玉は、' . ROBOTAMA_PRPTOTYPE[0] . 'です'. "\n";
// 最初に開発されたロボ玉は、ロボ玉試作1号機です

define('ROBOTAMA_PRPTOTYPE_PRICE', [
    'ロボ玉試作1号機' => 1000,
    'ロボ玉試作2号機' => 2000,
    'ロボ玉試作3号機' => 3000
]);

foreach (ROBOTAMA_PRPTOTYPE_PRICE as $key => $value){
    echo "{$key}のお値段は、{$value}円です!今がお買い得!". "\n";
}
// ロボ玉試作1号機のお値段は、1000円です!今がお買い得!
// ロボ玉試作2号機のお値段は、2000円です!今がお買い得!
// ロボ玉試作3号機のお値段は、3000円です!今がお買い得!


// [ 定数の「定義/未定義」を確認する関数を作成 ]

// 定数の「定義/未定義」Check-Function
function DefineCheck (string $val) {
    if (defined($val)){
        echo '定義済み' . "\n";
    } else {
        echo '未定義' . "\n";
    }
}

$const_key_check_list = [
    'ROBOTAMA',
    'HAKUTOU',
    'FROM',
    'MOMO'
];

foreach ($const_key_check_list as $val) {
    DefineCheck($val);
}

// 定義済み
// 未定義
// 定義済み
// 未定義

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

PHP / Laravel書籍

参考・引用

  1. PHP-Manual: define
  2. PHP-Manual: defined

最近の投稿