ホームページ  >  記事  >  バックエンド開発  >  PHP マジック変数に関する関連知識の理解と応用

PHP マジック変数に関する関連知識の理解と応用

jacklove
jackloveオリジナル
2018-05-07 11:16:341345ブラウズ

PHP マジック変数は PHP で重要な役割を果たします。この記事では、それらについて詳しく説明します。

PHP は、実行するスクリプトに多数の事前定義された定数を提供します。

ただし、多くの定数はさまざまな拡張ライブラリによって定義されており、これらの拡張ライブラリがロードされるとき、動的ロード後、またはコンパイル中に組み込まれた場合にのみ表示されます。

コード内の位置に応じて値が変化する魔法の定数が 8 つあります。

たとえば、__LINE__ の値は、スクリプト内のどの行にあるかによって異なります。これらの特別な定数は大文字と小文字が区別されず、次のとおりです:

__LINE__

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

f7ee39dd24b41f4236eb027c99203856

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

これは「2番目」の行です

__FILE__

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

PHP 4.0.2 以降、__FILE__ には常に絶対パス (シンボリック リンクの場合は解決された絶対パス) が含まれますが、以前のバージョンには相対パスが含まれる場合がありました。

例:

Example

9d16e5211a6344958f1f6427d8207f0c

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

ファイルは " にありますE:wampwwwtestindex.php"

__DIR__

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

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

d339bf6c593d948132b5bcea92670c11

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

ファイルは「E: wampwwwtest 」

__FUNCTION__

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

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

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

関数名: test

__CLASS__

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

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

<?phpclass test {
    function _print() {
        echo &#39;类名为:&#39;  . __CLASS__ . "<br>";        echo  &#39;函数名为:&#39; . __FUNCTION__ ;    }}$t = new test();$t->_print();?>

上記の例の出力結果は以下の通りです:

クラス名: test 関数名: _print

__TRAIT__

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

トレイト名には、それが宣言されるスコープが含まれます (例: FooBar)。

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

Instance

<?phpclass 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 で新しく追加されました)。定義されたとおりのメソッド名を返します (大文字と小文字が区別されます)。

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

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

関数名は次のとおりです: test

__NAMESPACE__

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

例:

Example

<?phpnamespace MyProject; 
echo &#39;命名空间为:"&#39;, __NAMESPACE__, &#39;"&#39;; // 输出 "MyProject"?>

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

名前空間は次のとおりです: "MyProject"

この記事では、php のマジック変数について詳しく説明しています。その他の学習資料については、こちらをご覧ください。 phpに注意してください。中国のウェブサイトで見ることができます。

関連する推奨事項:

PHPマジック変数__METHOD__と__FUNCTION__の違いは何ですか

PHPマジック変数とマジック関数のサンプルチュートリアルのまとめ

PHPマジック変数の使用例の詳細な説明、PHPの詳細な説明マジックの例_ PHP チュートリアル

以上がPHP マジック変数に関する関連知識の理解と応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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