小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2024-03-05 / 12 阅读
0
0

php魔术变量

PHP 中的魔术变量(Magic Constants)是一类特殊的预定义常量,它们的值会根据它们在源代码中的上下文自动变化。这些变量对大小写敏感,并且通常以两个下划线(__)开始和结束。PHP魔术变量主要用于获取脚本执行时的相关信息,如文件路径、行号、函数名、类名、命名空间名等。以下是PHP中常见的魔术变量列表及其含义:

  1. __LINE__:返回当前代码行的行号。
  2. __FILE__:返回当前正在执行脚本的完整路径和文件名。
  3. __DIR__:返回当前文件所在目录的绝对路径(不含文件名)。
  4. __FUNCTION__:返回当前函数的名称。
  5. __CLASS__:返回当前类的名称。
  6. __TRAIT__:返回当前trait的名称(PHP 5.4.0及更高版本)。
  7. __METHOD__:返回当前类的方法名(包括类名)。
  8. __NAMESPACE__:返回当前命名空间的名称。

还有一个值得注意的是,__halt_compiler() 不是魔术变量,而是一个语言结构,用于在编译时停止编译器,但它的作用和使用场景与其他魔术变量不同。

这些魔术变量在实际开发中非常有用,例如在调试、错误报告以及动态生成代码时,可以提供有关代码执行环境的重要信息。

当然,下面给出PHP魔术变量的每个示例及其在实际应用中的简单演示:

  1. __LINE__

    <?php
    echo "This line is number " . __LINE__ . ".\n";
    // 输出类似:This line is number 3.
    

    在这个例子中,__LINE__ 返回它所在的代码行号,即输出语句所在的行号。

  2. __FILE__

    <?php
    echo "Current script's file path is: " . __FILE__ . "\n";
    // 输出类似:Current script's file path is: /path/to/your/script.php
    

    这里 __FILE__ 返回包含该行代码的文件的完整路径。

  3. __DIR__

    <?php
    echo "The current directory is: " . __DIR__ . "\n";
    // 输出类似:The current directory is: /path/to/your/
    

    此处 __DIR__ 返回当前文件所在目录的绝对路径,不包括文件名。

  4. __FUNCTION__

    <?php
    function myFunction() {
        echo "The name of this function is: " . __FUNCTION__ . "\n";
    }
    myFunction();
    // 输出:The name of this function is: myFunction
    

    当在函数内部引用 __FUNCTION__ 时,它会显示当前函数的名称。

  5. __CLASS__

    <?php
    class MyClass {
        public function whoAmI() {
            echo "The name of this class is: " . __CLASS__ . "\n";
        }
    }
    $obj = new MyClass();
    $obj->whoAmI();
    // 输出:The name of this class is: MyClass
    

    在类的方法中,__CLASS__ 返回当前类的名称。

  6. __TRAIT__(PHP 5.4+)

    <?php
    trait MyTrait {
        public function whichTrait() {
            echo "The name of this trait is: " . __TRAIT__ . "\n";
        }
    }
    class MyClassUseTrait {
        use MyTrait;
    }
    $obj = new MyClassUseTrait();
    $obj->whichTrait();
    // 输出:The name of this trait is: MyTrait
    

    在trait内,__TRAIT__ 返回当前trait的名称。

  7. __METHOD__

    <?php
    class MyClass {
        public function myMethod() {
            echo "The fully qualified method name is: " . __METHOD__ . "\n";
        }
    }
    $obj = new MyClass();
    $obj->myMethod();
    // 输出:The fully qualified method name is: MyClass::myMethod
    

    __METHOD__ 返回当前类方法的全名,包括类名和方法名。

  8. __NAMESPACE__

    <?php
    namespace MyNamespace;
    
    class MyClass {
        public function showNamespace() {
            echo "The current namespace is: " . __NAMESPACE__ . "\n";
        }
    }
    $obj = new MyClass();
    $obj->showNamespace();
    // 输出:The current namespace is: MyNamespace
    

    在命名空间内的类或函数中,__NAMESPACE__ 返回当前的命名空间名称。


评论