目次

03 自動で定義済みの定数

自動的に定義される定数(マジカル定数)が 8 つあります。

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

自動で定義済みの定数

例1.

<?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

例2.

<?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