ホームページ  >  記事  >  バックエンド開発  >  PHPでのマジック定数の例の詳細な説明

PHPでのマジック定数の例の詳細な説明

怪我咯
怪我咯オリジナル
2017-05-03 17:33:311682ブラウズ

魔法定数とは何ですか?

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 の新機能)。

PHPでのマジック定数の例の詳細な説明上記の表では、「__」は 1 つの「_」ではなく、2 つのアンダースコアです。

マジック定数は、現在の環境情報を取得したり、ログを記録したりするためによく使用されます。

これらのマジック定数の使用法を見てみましょう:

__LINE__ ファイル内の現在の行番号を取得します。

<?PHP
header("content-type:text/html;charset=utf-8");
echo "这是第 ". __LINE__ ."行";
echo "<br/>";
?>

コード実行結果:

PHPでのマジック定数の例の詳細な説明

__FILE__ ファイルのフルパスとファイル名を取得します。インクルードされたファイルで使用されている場合は、インクルードされたファイル名を返します。

PHPでのマジック定数の例の詳細な説明

__DIR__ ファイルが存在するディレクトリを取得します。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。

インスタンス

<?php
header("content-type:text/html;charset=utf-8");
echo "该文件位于 ". __DIR__ ."文件夹下";
echo "<br/>";
?>

コードの実行結果:

PHPでのマジック定数の例の詳細な説明

__FUNCTION__ 定義時に関数の名前を取得します(大文字と小文字が区別されます)、関数名のみが返されます

インスタンス

<?php
header("content-type:text/html;charset=utf-8");
function Test() {
    echo  "该函数名为:". __FUNCTION__ ;
    echo "<br/>";
}
Test();
?>

コードの実行結果: Classが定義されているときに名前を取得します(ケースセンシティブ)

PHPでのマジック定数の例の詳細な説明

例-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でのマジック定数の例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。