自動的に定義される定数

PHPには実行されるスクリプトで使用可能な多くの 定義済みの定数があります。 しかし、これらの定数の多くは、種々の拡張モジュールにより作成され、 動的なロードやコンパイル時の組込みにより、これらの拡張モジュールが 使用可能である場合にのみ定義されます。

使われ方によって変化する自動的に定義される定数(マジカル定数)が 9 つあります。 例えば、__LINE__はスクリプト上において 呼び出された行番号です。 All these "magical" constants are resolved at compile time, unlike regular constants thats resolved at runtime. 特別定数は大文字小文字を区別しません。 内容は以下のとおりです:

PHP の "マジック" 定数
名前 説明
__LINE__ ファイル上の現在の行番号。
__FILE__ ファイルのフルパスとファイル名 (シンボリックリンクを解決した後のもの)。 インクルードされるファイルの中で使用された場合、インクルードされるファイルの名前が返されます。
__DIR__ そのファイルの存在するディレクトリ。include の中で使用すると、 インクルードされるファイルの存在するディレクトリを返します。 つまり、これは dirname(__FILE__) と同じ意味です。 ルートディレクトリである場合を除き、ディレクトリ名の末尾にスラッシュはつきません。
__FUNCTION__ 関数名。
__CLASS__ クラス名。 クラス名には、そのクラスが宣言されている名前空間も含みます (例 Foo\Bar)。 PHP 5.4 以降では、__CLASS__ がトレイトでも使えることに注意しましょう。トレイトのメソッド内で __CLASS__ を使うと、そのトレイトを use しているクラスの名前を返します。
__TRAIT__ トレイト名 トレイト名には、宣言された名前空間も含みます (例 Foo\Bar)。
__METHOD__ クラスのメソッド名。
__NAMESPACE__ 現在の名前空間の名前。
ClassName::class The fully qualified class name. See also ::class.

get_class(), get_object_vars(), file_exists(), function_exists()も参照してください。

変更履歴

バージョン 説明
5.5.0 ::class が追加されました。
5.4.0 __TRAIT__ が追加されました。
5.3.0 __DIR____NAMESPACE__ が追加されました。
5.0.0 __METHOD__ が追加されました。
5.0.0 これより前のバージョンでは、マジック定数のうちのいくつかが、常に小文字化されていました。 このバージョン以降は、すべて大文字小文字を区別する (宣言したとおりに設定される) ようになります。
4.3.0 __FUNCTION____CLASS__ が追加されました。
4.0.2 __FILE__ に常に絶対パスを含め、シンボリックリンクも解決するようになりました。 これより前のバージョンでは、場合によっては相対パスが含まれていることもありました。