PHP マジック定数
PHP は、実行するすべてのスクリプトに、多くの定義済み定数を提供します。
ただし、多くの定数はさまざまな拡張ライブラリによって定義されており、これらの拡張ライブラリが読み込まれたときにのみ現れます(動的読み込み後、またはコンパイル時に組み込まれている場合)。
8つのマジック定数があり、その値はコード内の位置によって変わります。
たとえば __LINE__ の値は、スクリプト内の行位置に依存します。これらの特別な定数は大文字と小文字を区別しません。次のとおりです。
__LINE__
ファイル内の現在の行番号。
例
上記の例の出力結果は次のとおりです。
这是第 “ 2 ” 行
__FILE__
ファイルの完全なパスとファイル名。インクルードされたファイル内で使用された場合は、インクルードされたファイル名を返します。
PHP 4.0.2 以降、__FILE__ は常に絶対パス(シンボリックリンクの場合は解決後の絶対パス)を含みますが、それ以前のバージョンでは相対パスを含むことがありました。
例:
例
上記の例の出力結果は次のとおりです。
该文件位于 “ E:\wamp\www\test\index.php ”
__DIR__
ファイルが存在するディレクトリ。インクルードされたファイル内で使用された場合は、インクルードされたファイルが存在するディレクトリを返します。
これは dirname(__FILE__) と等価です。ルートディレクトリ以外では、ディレクトリ名の末尾にスラッシュは含まれません。(PHP 5.3.0 で追加)
例
上記の例の出力結果は次のとおりです。
该文件位于 “ E:\wamp\www\test ”
__FUNCTION__
関数名(PHP 4.3.0 で追加)。PHP 5 以降、この定数は関数が定義されたときの名前(大文字小文字を区別)を返します。PHP 4 では、この値は常に小文字でした。
例
上記の例の出力結果は次のとおりです。
函数名为:test
__CLASS__
クラス名(PHP 4.3.0 で追加)。PHP 5 以降、この定数はクラスが定義されたときの名前(大文字小文字を区別)を返します。
PHP 4 では、この値は常に小文字でした。クラス名には、宣言されたスコープ(例: Foo\Bar)が含まれます。PHP 5.4 以降、__CLASS__ はトレイトでも機能します。トレイトのメソッド内で使用すると、__CLASS__ はそのトレイトのメソッドを呼び出しているクラスの名前になります。
例
上記の例の出力結果は次のとおりです。
类名为:test 函数名为:_print
__TRAIT__
Trait の名前(PHP 5.4.0 で追加)。PHP 5.4.0 以降、PHP は traits と呼ばれるコード再利用の方法を実装しました。
Trait 名には、宣言されたスコープ(例: Foo\Bar)が含まれます。
基本クラスから継承されたメンバーは、挿入された SayWorld トレイトの MyHelloWorld メソッドによって上書きされます。その動作は MyHelloWorld クラスで定義されたメソッドと同じです。優先順位は、現在のクラスのメソッドがトレイトのメソッドを上書きし、トレイトのメソッドが基本クラスのメソッドを上書きします。
例
上記の例の出力は次のとおりです。
Hello World!
__METHOD__
クラスのメソッド名(PHP 5.0.0 で追加)。このメソッドが定義されたときの名前(大文字小文字を区別)を返します。
例:
例
上記の例の出力結果は次のとおりです。
函数名为:test
__NAMESPACE__
現在の名前空間の名前(大文字小文字を区別)。この定数はコンパイル時に定義されます(PHP 5.3.0 で追加)。
例:
例
上記の例の出力結果は次のとおりです。
命名空间为:"MyProject"その他の拡張