PHPマジック定数の使い方

angryTom
angryTomオリジナル
2019-08-22 10:44:422077ブラウズ

PHPマジック定数の使い方

マジック定数は、PHP が実行するスクリプトに提供する多数の事前定義された定数です。ただし、多くの定数はさまざまな拡張ライブラリによって定義されており、これらの拡張ライブラリが動的にロードされるか、コンパイル時に組み込まれるかによってロードされるときにのみ表示されます。以下では、PHP でのさまざまなマジック定数の使用方法を詳しく紹介します。

推奨チュートリアル: PHP ビデオ チュートリアル


__LINE__

ファイル内の現在の行番号。

<?php
    echo &#39;这是第 " &#39;  . __LINE__ . &#39; " 行&#39;;
 ?>

上記の例の出力結果は次のとおりです:


这是第 “ 2 ” 行

### ####################################__ファイル__##########

ファイルの完全なパスとファイル名。インクルードされたファイル内で使用された場合、インクルードされたファイルの名前を返します。

PHP 4.0.2 以降、__FILE__ には常に絶対パス (シンボリック リンクの場合は解決された絶対パス) が含まれますが、それより前のバージョンには相対パスが含まれる場合がありました。
<?php
    echo &#39;该文件位于 " &#39;  . __FILE__ . &#39; " &#39;;
?>

上記の例の出力結果は次のとおりです:

该文件位于 “ E:\wamp\www\test\index.php ”
__DIR__

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

これは dirname(__FILE__) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0 の新機能)

<?php
    echo &#39;该文件位于 " &#39;  . __DIR__ . &#39; " &#39;;
?>
上記の例の出力結果は次のとおりです:
该文件位于 “ E:\wamp\www\test ”

##__FUNCTION__

##関数名 (PHP 4.3.0 で新たに追加)。 PHP 5 以降、この定数は定義されたとおりの関数名を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。

<?php
    function test() {
        echo  &#39;函数名为:&#39; . __FUNCTION__ ;}test();
?>

上記の例の出力結果は次のとおりです:

函数名为:test

##__CLASS__


クラスの名前 (PHP 4.3.0 で新しく追加されました)。 PHP 5 以降、この定数は定義されたときのクラスの名前を返します (大文字と小文字は区別されます)。

PHP 4 では、この値は常に小文字です。クラス名には、それが宣言されているスコープが含まれます (例: Foo\Bar)。 PHP 5.4 以降、__CLASS__ はトレイトに対しても機能することに注意してください。特性メソッド内で使用される場合、__CLASS__ は特性メソッドを呼び出すクラスの名前になります。

<?php
    class test {
        function _print() {
            echo &#39;类名为:&#39;  . __CLASS__ . "<br>";        
            echo  &#39;函数名为:&#39; . __FUNCTION__ ;    
         }
     }
    $t = new test();
    $t->_print();
 ?>
上記の例の出力結果は次のとおりです:

类名为:test
函数名为:_print

__TRAIT__


#Trait の名前 (PHP 5.4.0 の新機能)。 PHP 5.4.0 以降、PHP はトレイトと呼ばれるコード再利用の方法を実装しています。

トレイト名には、それが宣言されているスコープが含まれます (たとえば、Foo\Bar)。 基本クラスから継承されたメンバーは、挿入された SayWorld トレイトの MyHelloWorld メソッドによってオーバーライドされます。その動作は、MyHelloWorld クラスで定義されたメソッドと一致しています。優先順位としては、現在のクラスのメソッドが特性メソッドをオーバーライドし、特性メソッドが基本クラスのメソッドをオーバーライドします。

<?php
    class Base {
        public function sayHello() {
            echo &#39;Hello &#39;;  
      }
    }
    trait SayWorld {
        public function sayHello() {
            parent::sayHello();        
            echo &#39;World!&#39;;    
           }
       }
     class MyHelloWorld extends Base {
            use SayWorld;
       }
    $o = new MyHelloWorld();
    $o->sayHello();
 ?>

上記のルーチンは出力します:

Hello World!



__METHOD__

#クラスのメソッド名 (PHP 5.0.0 で新しく追加されました)。定義されたとおりのメソッド名を返します (大文字と小文字が区別されます)。

<?php
    function test() {
        echo  &#39;函数名为:&#39; . __METHOD__ ;
       }
     test();
 ?>

上記の例の出力結果は次のとおりです:

函数名为:test



##__NAMESPACE__

現在のネームスペースの名前 (大文字と小文字が区別されます)。この定数はコンパイル時に定義されます (PHP 5.3.0 の新機能)。

<?php
    namespace MyProject; 
    echo &#39;命名空间为:"&#39;, __NAMESPACE__, &#39;"&#39;; 
 ?>

上記の例の出力結果は次のとおりです:


命名空间为:"MyProject"

以上がPHPマジック定数の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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