ユーザ用ツール

サイト用ツール


11_php:03_magic_constants

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
11_php:03_magic_constants [2014/12/15 06:18] matsui11_php:03_magic_constants [2021/07/15 05:12] (現在) matsui
行 1: 行 1:
 +====== 03 自動で定義済みの定数 ======
  
 +自動的に定義される定数(マジカル定数)が 8 つあります。
 +
 +^  名前  ^  説明  ^
 +|  <nowiki>__LINE__</nowiki>  |ファイル上の現在の行番号。|
 +|  <nowiki>__FILE__</nowiki>  |ファイルのフルパスとファイル名 (シンボリックリンクを解決した後のもの)。 \\  インクルードされるファイルの中で使用された場合、インクルードされるファイルの名前が返されます。|
 +|  <nowiki>__DIR__</nowiki>  |そのファイルの存在するディレクトリ。 \\ include の中で使用すると、 インクルードされるファイルの存在するディレクトリを返します。 \\ つまり、これは dirname(__FILE__) と同じ意味です。 \\ ルートディレクトリである場合を除き、ディレクトリ名の末尾にスラッシュはつきません。|
 +|  <nowiki>__FUNCTION__</nowiki>  |関数名。|
 +|  <nowiki>__CLASS__</nowiki>  |クラス名。 \\ クラス名には、そのクラスが宣言されている名前空間も含みます (例 Foo\Bar)。 PHP 5.4 以降では、__CLASS__ がトレイトでも使えることに注意しましょう。トレイトのメソッド内で __CLASS__ を使うと、そのトレイトを use しているクラスの名前を返します。|
 +|  <nowiki>__TRAIT__</nowiki>  |トレイト名 トレイト名には、宣言された名前空間も含みます (例 Foo\Bar)。|
 +|  <nowiki>__METHOD__</nowiki>  |クラスのメソッド名。|
 +|  <nowiki>__NAMESPACE__</nowiki>  |現在の名前空間の名前|
 +
 +[[http://php.net/manual/ja/language.constants.predefined.php|自動で定義済みの定数]]
 +
 +
 +
 +===== 例1. =====
 +
 +<code>
 +<?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;
 +}
 +?>
 +</code>
 +
 +<code console>
 +$ php test_01.php 
 +__LINE__ -> 3
 +__FILE__ -> /home/matsui/test.php
 +__DIR__ -> /home/matsui
 +__FUNCTION__ -> test_function
 +</code>
 +
 +===== 例2. =====
 +<code>
 +<?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";
 +  }
 +}
 +</code>
 +
 +<code console>
 +$ php test_02.php 
 +__CLASS__ -> My\Space\TestClass
 +__METHOD__ -> My\Space\TestClass::test_mess_02
 +__NAMESPACE__ -> My\Space
 +</code>
 +
 +{{tag> php:syntax}}