PHP のマジック定数とは何ですか?魔法の定数とは何ですか? (要約)

青灯夜游
リリース: 2023-04-10 14:08:01
転載
2747 人が閲覧しました

PHP のマジック定数とは何ですか?魔法の定数とは何ですか? (要約)

これまで、一般的に使用されるいくつかのマジック メソッドについて学習しました。マジック メソッドに加えて、PHP にはいくつかのマジック定数も用意されています。誰もが日常業務でそれらを使用したことがあると思います。結論は次のとおりです。 。

実際には、PHP にも多くの定数が用意されていますが、それらはすべてさまざまな拡張ライブラリに依存しています。いくつかの定数は汎用であり、定数が配置されているコードの場所に続く位置関連の情報を提供します。これらは次のとおりです** *魔法定数***。

マジック定数は大文字と小文字を区別しません。__LINE__ と __line__ は同じですが、エンジニアリング開発では、定数はできる限り大文字にする必要があります。

__LINE__

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

echo __LINE__ . PHP_EOL; // 3

function testLine()
{
    echo __LINE__ . PHP_EOL; // 7
}

class TestLineClass
{
    function testLine()
    {
        echo __LINE__ . PHP_EOL; // 14
    }
}

testLine();
$test = new TestLineClass();
$test->testLine();
ログイン後にコピー

__FILE__

ファイルの完全なパスとファイル名。インクルードされたファイル内で使用された場合、インクルードされたファイルの名前を返します。 PHP 4.0.2 以降、__FILE__ には常に絶対パス (シンボリック リンクの場合は解決された絶対パス) が含まれますが、それより前のバージョンには相対パスが含まれる場合がありました。

echo __FILE__ . PHP_EOL; // D:\phpproject\php\newblog\php-magic-constant.php
ログイン後にコピー

#__DIR__##ファイルが配置されているディレクトリ。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。これは dirname(__FILE__) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0 の新機能) =

echo __DIR__ . PHP_EOL; // D:\phpproject\php\newblog
ログイン後にコピー

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

echo __FUNCTION__ . PHP_EOL; // 啥都没输出
function testFunction()
{
    echo __FUNCTION__ . PHP_EOL; // testFunction
}

class TestFunctionClass
{
    function testFunction1()
    {
        echo __FUNCTION__ . PHP_EOL; // testFunction1
    }
}

testFunction();
$test = new TestFunctionClass();
$test->testFunction1();
ログイン後にコピー

__CLASS__

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

echo __CLASS__ . PHP_EOL; // 什么也没有
function testClass()
{
    echo __CLASS__ . PHP_EOL; // 什么也没有
}

trait TestClassTrait
{
    function testClass2()
    {
        echo __CLASS__ . PHP_EOL; // TestClassClass
    }
}

class TestClassClass
{
    use TestClassTrait;

    function testClass1()
    {
        echo __CLASS__ . PHP_EOL; // TestClassClass
    }
}

testClass();
$test = new TestClassClass();
$test->testClass1();
$test->testClass2();
ログイン後にコピー

__TRAIT__

トレイトの名前 (PHP 5.4.0 の新機能)。 PHP 5.4 以降、この定数は定義されたとおりの特性の名前を返します (大文字と小文字が区別されます)。トレイト名には、それが宣言されているスコープが含まれます (例: Foo\Bar)。

echo __TRAIT__ . PHP_EOL; // 什么也没有
function testTrait()
{
    echo __TRAIT__ . PHP_EOL; // 什么也没有
}

trait TestTrait
{
    function testTrait2()
    {
        echo __TRAIT__ . PHP_EOL; // TestTrait
    }
}

class TestTraitClass
{
    use TestTrait;

    function testTrait1()
    {
        echo __TRAIT__ . PHP_EOL; // 什么也没有
    }
}

testTrait();
$test = new TestTraitClass();
$test->testTrait1();
$test->testTrait2();
ログイン後にコピー

__METHOD__

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

echo __METHOD__ . PHP_EOL; // 什么也没有
function testMethod()
{
    echo __METHOD__ . PHP_EOL; // testMethod
}

class TestMethodClass
{
    function testMethod1()
    {
        echo __METHOD__ . PHP_EOL; // TestMethodClass::testMethod1
    }
}

testMethod();
$test = new TestMethodClass();
$test->testMethod1();
ログイン後にコピー

__NAMESPACE__

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

echo __NAMESPACE__ . PHP_EOL; // test\magic\constant
class TestNameSpaceClass
{
    function testNamespace()
    {
        echo __NAMESPACE__ . PHP_EOL; // test\magic\constant
    }
}

$test = new TestNameSpaceClass();
$test->testNamespace();
ログイン後にコピー

完全なコード: https://github.com/zhangyue0503/php/blob/master/newblog/php-magic-constant.php

推奨される学習: 「

PHP ビデオ チュートリアル

以上がPHP のマジック定数とは何ですか?魔法の定数とは何ですか? (要約)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート