魔法定数とは何ですか?
PHP 定数を説明するとき、PHP の定数のほとんどは変更されていないことがわかりますが、コード内の位置の変更によって変更される 8 つの事前定義された定数があります。これらの 8 つの定数はマジック定数と呼ばれ、これらの特別な定数です。大文字と小文字は区別されません。
PHP の「マジック定数」は次のとおりです。
関数 | 検出タイプ |
__LINE__ | ファイル内の現在の行番号。 |
__FILE__ | ファイルのフルパスとファイル名。インクルードされたファイル内で使用された場合、インクルードされたファイルの名前を返します。 PHP 4.0.2 以降、__FILE__ には常に絶対パス (シンボリック リンクの場合は解決された絶対パス) が含まれますが、それより前のバージョンには相対パスが含まれる場合がありました。 |
__DIR__ | ファイルが配置されているディレクトリ。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。これは dirname(__FILE__) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0 の新機能) |
__FUNCTION__ | 関数名 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたとおりの関数名を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。 |
__CLASS__ | クラスの名前 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたときのクラスの名前を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。クラス名には、それが宣言されているスコープが含まれます (例: FooBar)。 PHP 5.4 以降、__CLASS__ はトレイトに対しても機能することに注意してください。特性メソッドで使用される場合、__CLASS__ は特性メソッドを呼び出すクラスの名前です |
__TRAIT__ | 特性名 (PHP 5.4.0 の新機能)。 PHP 5.4 以降、この定数は定義されたとおりの特性の名前を返します (大文字と小文字が区別されます)。 Trait 名には、それが宣言されているスコープのメソッド名 (FooBar など) が含まれます |
__METHOD__ | (PHP 5.0.0 で新しく追加されました)。定義されたとおりのメソッド名を返します (大文字と小文字が区別されます)。 |
__NAMESPACE__ | 現在のネームスペースの名前 (大文字と小文字が区別されます)。この定数はコンパイル時に定義されます (PHP 5.3.0 の新機能)。 |
上記の表では、「__」は 1 つの「_」ではなく、2 つのアンダースコアです。
マジック定数は、現在の環境情報を取得したり、ログを記録したりするためによく使用されます。
これらのマジック定数の使用法を見てみましょう:
__LINE__ ファイル内の現在の行番号を取得します。
例
<?PHP header("content-type:text/html;charset=utf-8"); echo "这是第 ". __LINE__ ."行"; echo "<br/>"; ?>
コード実行結果:
__FILE__ ファイルのフルパスとファイル名を取得します。インクルードされたファイルで使用されている場合は、インクルードされたファイル名を返します。
__DIR__ ファイルが存在するディレクトリを取得します。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。
インスタンス
<?php header("content-type:text/html;charset=utf-8"); echo "该文件位于 ". __DIR__ ."文件夹下"; echo "<br/>"; ?>
コードの実行結果:
__FUNCTION__ 定義時に関数の名前を取得します(大文字と小文字が区別されます)、関数名のみが返されます
インスタンス
<?php header("content-type:text/html;charset=utf-8"); function Test() { echo "该函数名为:". __FUNCTION__ ; echo "<br/>"; } Test(); ?>
コードの実行結果: Classが定義されているときに名前を取得します(ケースセンシティブ)
例-Sensitive)、関数がクラスにある場合、クラスメソッド名が返され、クラスに返されます。Instance
<?php header("content-type:text/html;charset=utf-8"); class test { function show() { echo "该类名为:". __CLASS__ . "<br>"; echo "该函数名为:". __FUNCTION__ ; echo "<br/>"; } } $t = new test(); $t->show(); ?>
__NAMESPACE__ 現在の名前空間の名前(大文字と小文字が区別されます)
<?php header("content-type:text/html;charset=utf-8"); function test1() { echo "该函数名为:". __METHOD__ ; echo "<br/>"; } test1(); ?> <?php class chhua{ function test(){ //返回类方法的名称 echo __METHOD__; } } $e=new chhua(); $e->test();//输出:chhua::test ?>
以上がPHPでのマジック定数の例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。