自動的に定義される定数(マジカル定数)が 8 つあります。
名前 | 説明 |
---|---|
__LINE__ | ファイル上の現在の行番号。 |
__FILE__ | ファイルのフルパスとファイル名 (シンボリックリンクを解決した後のもの)。 インクルードされるファイルの中で使用された場合、インクルードされるファイルの名前が返されます。 |
__DIR__ | そのファイルの存在するディレクトリ。 include の中で使用すると、 インクルードされるファイルの存在するディレクトリを返します。 つまり、これは dirname(FILE) と同じ意味です。 ルートディレクトリである場合を除き、ディレクトリ名の末尾にスラッシュはつきません。 |
__FUNCTION__ | 関数名。 |
__CLASS__ | クラス名。 クラス名には、そのクラスが宣言されている名前空間も含みます (例 Foo\Bar)。 PHP 5.4 以降では、CLASS がトレイトでも使えることに注意しましょう。トレイトのメソッド内で CLASS を使うと、そのトレイトを use しているクラスの名前を返します。 |
__TRAIT__ | トレイト名 トレイト名には、宣言された名前空間も含みます (例 Foo\Bar)。 |
__METHOD__ | クラスのメソッド名。 |
__NAMESPACE__ | 現在の名前空間の名前 |
<?php //test_01.php echo "__LINE__ -> ".__LINE__."\n"; echo "__FILE__ -> ".__FILE__."\n"; echo "__DIR__ -> ".__DIR__."\n"; echo test_function(); function test_function(){ $res = ''; $res .= "__FUNCTION__ -> ".__FUNCTION__."\n"; return $res; } ?>
$ php test_01.php __LINE__ -> 3 __FILE__ -> /home/matsui/test.php __DIR__ -> /home/matsui __FUNCTION__ -> test_function
<?php //test_02.php namespace My\Space; $class = new TestClass; $class->test_mess_01(); $class->test_mess_02(); $class->test_mess_03(); class TestClass { function test_mess_01() { echo "__CLASS__ -> ".__CLASS__."\n"; } function test_mess_02() { echo "__METHOD__ -> ".__METHOD__."\n"; } function test_mess_03() { echo "__NAMESPACE__ -> ".__NAMESPACE__."\n"; } }
$ php test_02.php __CLASS__ -> My\Space\TestClass __METHOD__ -> My\Space\TestClass::test_mess_02 __NAMESPACE__ -> My\Space