PHP マジック定数
1. PHPのマジック定数(PHP Magic Constants)
PHPには、使用される場所によって値が変化する、あらかじめ定義された9つの定数があります。これらは「マジック定数(Magic constants)」と呼ばれます。
マジック定数は、ファイル名、ディレクトリ名、行番号、ファンクション(Function / 関数)名、クラス(Class)名など、スクリプト(Script)の現在の状態に関する情報を提供します。
マジック定数は、ClassName::class を除き、常に2つのアンダースコア(__)で始まり、2つのアンダースコアで終わる命名規則になっています。
また、これらの定数はケースインセンシティブ(Case-insensitive / 大文字小文字を区別しない)であり、例えば __LINE__ は __line__ と記述しても同じ値を返します。
2. マジック定数の一覧と詳細
以下の表は、マジック定数の一覧とその説明です。
| 定数名 | 説明 |
|---|---|
__CLASS__ | クラスの内部で使用された場合、そのクラス名を返します。 |
__DIR__ | そのファイルのディレクトリ(Directory)を返します。 |
__FILE__ | フルパスを含むファイル名を返します。 |
__FUNCTION__ | ファンクションの内部で使用された場合、その関数名を返します。 |
__LINE__ | ファイルの現在の行番号を返します。 |
__METHOD__ | クラスに属するファンクション(メソッド)内で使用された場合、クラス名と関数名の両方を返します。 |
__NAMESPACE__ | ネームスペース(Namespace / 名前空間)の内部で使用された場合、その名前空間の名前を返します。 |
__TRAIT__ | トレイト(Trait)の内部で使用された場合、そのトレイト名を返します。 |
ClassName::class | 指定されたクラスの名前、および(存在する場合は)ネームスペースの名前を返します。 |
2.1 実践的なコード例
マジック定数を利用して、現在の実行環境の情報を出力する例です。
<?php
namespace MyProject;
class Debugger {
public function showDetails() {
echo "現在の行番号: " . __LINE__ . "<br>";
echo "現在のクラス名: " . __CLASS__ . "<br>";
echo "現在のメソッド名: " . __METHOD__ . "<br>";
echo "現在のディレクトリ: " . __DIR__ . "<br>";
}
}
$obj = new Debugger();
$obj->showDetails();
// ClassName::class の例
echo "完全修飾クラス名: " . Debugger::class;
?>