自動的に定義される定数(マジカル定数)が 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