PHP 速習チュートリアル

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;
?>