マジック定数は、使用される場所によって値が自動的に変わる特殊な定数です。ファイルパスや行番号、クラス名などの実行環境情報を取得できます。デバッグやログ出力に便利です。
マジック定数の一覧
| 定数 | 説明 |
|---|---|
__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で必須
requireやincludeでファイルを読み込む際、__DIR__を基準にすると、どこから実行しても正しいパスで読み込めます。相対パスだけだと実行ディレクトリによって失敗する場合があります。
まとめ
- マジック定数は実行場所に応じて値が自動的に変わる特殊な定数
__FILE__と__DIR__はファイル読み込みのパス解決に必須__CLASS__と__METHOD__はデバッグやログ出力で活用