基礎

PHPのマジック定数|実行環境に応じて変化する定数

マジック定数は、使用される場所によって値が自動的に変わる特殊な定数です。ファイルパスや行番号、クラス名などの実行環境情報を取得できます。デバッグやログ出力に便利です。

マジック定数の一覧

定数説明
__LINE__現在の行番号
__FILE__ファイルのフルパス
__DIR__ファイルのディレクトリ
__FUNCTION__関数名
__CLASS__クラス名(名前空間を含む)
__METHOD__クラスメソッド名
__NAMESPACE__現在の名前空間
__TRAIT__トレイト名

使用例

PHP
<?php
echo "行番号: " . __LINE__ . "<br>";     // 行番号: 2
echo "ファイル: " . __FILE__ . "<br>";    // フルパス
echo "ディレクトリ: " . __DIR__ . "<br>"; // ディレクトリ

function myFunction() {
    echo "関数名: " . __FUNCTION__ . "<br>"; // myFunction
}
myFunction();

class MyClass {
    public function myMethod() {
        echo "クラス: " . __CLASS__ . "<br>";    // MyClass
        echo "メソッド: " . __METHOD__ . "<br>"; // MyClass::myMethod
    }
}
(new MyClass())->myMethod();
?>

実用的な活用法

PHP(デバッグログ)
<?php
function debug_log(string $message): void {
    $file = basename(__FILE__);
    $line = __LINE__;
    error_log("[{$file}:{$line}] {$message}");
}

// ファイルの読み込みパス解決
require_once __DIR__ . '/config/database.php';
require_once __DIR__ . '/../vendor/autoload.php';
?>
__DIR__はrequireで必須

requireincludeでファイルを読み込む際、__DIR__を基準にすると、どこから実行しても正しいパスで読み込めます。相対パスだけだと実行ディレクトリによって失敗する場合があります。

まとめ

  • マジック定数は実行場所に応じて値が自動的に変わる特殊な定数
  • __FILE____DIR__はファイル読み込みのパス解決に必須
  • __CLASS____METHOD__はデバッグやログ出力で活用