🐡

マジック定数

2022/10/05に公開

正確な詳細を知りたい場合は、公式サイトをご覧ください。このページでは分かりやすく一言で紹介します。
https://www.php.net/manual/ja/language.constants.magic.php

__DIR__

この__DIR__定数を使っているファイルのディレクトリーのパスが代入されています。

PHPの基本的なテクニックで、関数や設定をcommonファイルにまとめて、それをincludeする書き方がありますが、「includeされたファイル」が、更に他のファイルをincludeしようとすると、相対パスの書き方で間違えやすくなります。[1]

複雑なincludeをしても、include(__DIR__.'/../../common/db.php');という書き方をすれば、絶対パスで指定することが可能です❗

__FILE__

この__FILE__定数を使っているファイルのパスが代入されています。
ファイル名だけを取得したい(パスは要らない)場合は、 basename(__FILE__) で取得できます。
用途としては、ほぼデバッグ用です。

__LINE__

__LINE__を記述した行が何行目かを取得できます。主にデバッグに使います。
下のように書くと、どっちのif文が実行されているか確認できます。

echo __FILE__;
if( $var === true ){
  echo __LINE__;
}else{
  echo __LINE__;
}

__FUNCTION__

これを記述した箇所の関数名やメソッド名を取得できます。
デバッグやフレームワークの作成に使います。

__CLASS__

これを記述した箇所のクラス名を取得できます。
デバッグやフレームワークの作成に使います。

__METHOD__

これを記述した箇所のメソッド名を取得できます。
メソッド名は、完全修飾されているので、単純にメソッド名だけが欲しい場合は、メソッド内で __FUNCTION__ を使います。
デバッグやフレームワークの作成に使います。

脚注
  1. includeするパスは、実行ファイルからの相対パスになります。「includeされたファイル」からの相対パスではありません。 ↩︎

Discussion