get_defined_constants関数は、定義されたすべての定数とそれらの対応する値を含む配列を返します。 constはdefine()またはconstキーワードによって定義され、スクリプト全体で変更できません。
たとえば、次のコードは、定数を定義し、 get_defined_constantsを使用して定義された定数を表示する方法を示しています。
define("SITE_URL", "https://m66.net");
define("SITE_NAME", "M66");
$constants = get_defined_constants();
print_r($constants);
出力は次のようになります。
Array
(
[SITE_URL] => https://m66.net
[SITE_NAME] => M66
...
)
このようにして、定義されたすべての定数とその値を見ることができます。
getting_defined_constantsが実行されると、一部の定数の値が空に見えます。この状況は、いくつかの理由によって引き起こされる可能性があります。
定数は正しく割り当てられていません<br> 定義されたときに定数はすぐに値を割り当てる必要があります。定数がdefine()またはconstステートメントで適切に提供されていない場合、または値が空の文字列である場合、 get_defined_constantsを介して取得した場合、この定数の値は空のように表示されます。
define("EMPTY_CONSTANT", "");
上記のコードは、空の文字列を持つ一定のempty_constantを定義します。 get_defined_constantsが呼び出されると、出力が表示されます。
[EMPTY_CONSTANT] =>
一定の定義の範囲<br> PHPでは、通常、定数の範囲はグローバルです。ただし、特定のスコープ内で定数を定義する場合(内部関数など)、 get_defined_constantsによって返されることはありません。
function defineInsideFunction() {
define("FUNC_CONST", "Hello, World!");
}
defineInsideFunction();
print_r(get_defined_constants());
関数内の定数を定義する場合、 get_defined_constantsの結果に表示されない場合があります。この問題を回避するために、定数の定義がグローバル範囲で実行されることを確認してください。
条件付き定義<br> 定数の定義がいくつかの条件付きステートメントに包まれ、条件が満たされない場合、定数は定義されません。したがって、これらの定数は、 get_defined_constantsを介して取得したときに表示されない場合があります。
if (false) {
define("CONDITION_CONST", "This will not be defined");
}
この場合、条件付き判断が失敗し、定数が定義されていないため、 condition_constはget_defined_constantsの結果に表示されません。
事前定義された定数がありません
PHP自体は、 php_version 、 php_osなど、実行時にいくつかの事前定義された定数を定義しますが、カスタム環境構成などの特別な場合、phpは事前定義された定数をロードしないため、表示されない場合があります。
特定の環境によっては、特定の定数は環境によって異なる場合があります。特定の構成で定義された定数が空になっている場合は、PHP構成または実行環境を確認する必要がある場合があります。
ヌル値を示す定数を回避するには、定数を定義していることを確認してください。
定義が定義されているときに有効な値があり、空の文字列ではないことを確認してください。
定数の定義がグローバルに実行され、ローカルスコープ内でのみ定義されないようにしてください。
条件付きステートメントで定数を定義する場合、条件が常に保持されていることを確認するか、定数定義の前に条件付き判断を下す必要があります。
事前定義された定数が欠落している場合は、PHP環境構成を確認して、実行時に関連する定数が正しくロードされていることを確認します。