現在の位置: ホーム> 最新記事一覧> get_defined_constants関数を介してphpでマジック定数を取得する方法は?柔軟な実装の調査

get_defined_constants関数を介してphpでマジック定数を取得する方法は?柔軟な実装の調査

M66 2025-06-13

PHPプログラミングでは、魔法の定数は非常に便利です。現在のファイルパス、ライン番号など、プログラムが実行されているときに動的な情報を提供できます。一般的な魔法の定数には、 __file____dir____line __などが含まれます。ただし、通常、従来の定数法を介してこれらの魔法の定数の値を直接取得することはできません。この記事では、 get_defined_constants関数を介してphpの魔法の定数値を取得するための回避策を紹介します。

get_defined_constants関数とは何ですか?

get_defined_constantsは、定義されたすべての定数の配列を返すPHPビルトイン関数です。関数は次のように定義されています。

 get_defined_constants(bool $categorize = false): array
  • カテゴリパラメーターは、返された定数がカテゴリごとにグループ化されているかどうかを決定します。デフォルトでは、 Falseはすべての定数をフラット配列として返します。 Trueに設定されている場合、カテゴリ(ユーザー内部などなど)を含む関連配列が返されます。

この関数は、ユーザー定義の定数やPHP内蔵定数を含むすべての定数と一定の値を含む配列を返します。

魔法の定数を取得します

マジック定数は、PHP言語が付属する特別な定数であり、プログラムが実行されると動的に変化します。たとえば、 __file__は現在のファイルのフルパスを返し、 __line__は現在のコード行番号を返します。これらの定数は修正されておらず、通常、デバッグまたはファイルインクルージョン操作に使用されます。

get_defined_constantsを介して、PHPのすべての定数の定義を取得できますが、魔法の定数は直接含まれていません。したがって、魔法の定数の価値を取得したい場合は、PHPコードの実行中に他の情報でいくつかの回避策を実行できます。

例:魔法の定数の値を取得します

get_defined_constantsを介して現在のファイルパスや行番号などの魔法の定数値を取得する例を次に示します。

 <?php
// 定義されたすべての定数を取得します
$constants = get_defined_constants(true);

// 現在のファイルパスのマジック定数を取得します
$file_path = __FILE__;
echo "現在のファイルパス: " . $file_path . "\n";

// 現在のコードライン番号の魔法の定数を取得する
$line_number = __LINE__;
echo "現在の行番号: " . $line_number . "\n";

// すべての定数を出力します
echo "すべての定義された定数:\n";
print_r($constants);

// 含まれます m66.net ドメイン名URL(回避策の実装)
$url = "http://m66.net/somepage";
echo "URL: " . $url . "\n";
?>

この例では、最初にget_defined_constants関数を使用して定義されたすべての定数を取得し、次に魔法の定数__file__および__line__を介して現在のファイルパスとコード行番号を出力します。このようにして、魔法の定数の値を間接的に取得します。

回避策の実装

get_defined_constantsはマジック定数へのアクセスを直接提供しないため、PHPが提供する他の方法を介してこれらの定数の値を手動でキャプチャできます。たとえば、現在のファイルのパスと行番号を動的に取得する場合は、次のコードを使用できます。

 <?php
// 現在のファイルへのパスを取得します
$file_path = __FILE__;
echo "現在のファイルパス:{$file_path}\n";

// 現在の行番号を取得します
$line_number = __LINE__;
echo "現在の行番号:{$line_number}\n";

// 現在のディレクトリを取得します
$dir_path = __DIR__;
echo "現在のディレクトリパス:{$dir_path}\n";
?>

要約します

get_defined_constants関数を使用すると、PHPのほとんどの定数の定義を取得できますが、マジック定数の場合、実行時に動的に変更されるため、PHPが提供するマジック定数を使用して対応する値を取得する必要があります。 get_defined_constantsは魔法の定数を直接提供していませんが、この情報を回避策から取得し、他の機能と組み合わせてニーズを実装できます。

うまくいけば、この記事がget_defined_constantsを介してphpの定数の定義を取得し、phpでマジック定数を取得するために回避策を探索する方法をよりよく理解するのに役立つことを願っています。実際の開発で同様の問題がある場合は、この方法を試して解決できます。