目录

  1. PHP 魔术常量概述
  2. PHP 魔术常量列表
  3. 使用魔术常量的示例
  4. 参考资料与出站链接

PHP 魔术常量概述

PHP 中的魔术常量是一些内置的常量,在代码执行时会自动根据上下文进行求值。与普通常量不同,魔术常量会根据代码所在的位置、调用方式等动态变化,适用于调试、日志记录和获取文件信息等场景。魔术常量以双下划线 __ 开头,常用于帮助开发者获取关于代码执行环境的各种信息。


PHP 魔术常量列表

__LINE__

__LINE__ 常量代表当前行号。当 PHP 代码执行时,它会自动返回当前文件的行号。

示例:

<?php
echo "This is line " . __LINE__;  // 输出:This is line 3
?>

__FILE__

__FILE__ 常量代表当前文件的完整路径和文件名。如果文件被包括或包含在其他文件中,__FILE__ 会返回当前文件的路径,而不是原始文件的路径。

示例:

<?php
echo __FILE__;  // 输出当前文件的完整路径
?>

__DIR__

__DIR__ 常量返回当前文件所在的目录路径。它与 __FILE__ 类似,但只返回目录路径,不包括文件名。

示例:

<?php
echo __DIR__;  // 输出当前文件的目录路径
?>

__FUNCTION__

__FUNCTION__ 常量表示当前函数的名称。当它用于函数内部时,会返回该函数的名称。

示例:

<?php
function myFunction() {
    echo __FUNCTION__;  // 输出:myFunction
}
myFunction();
?>

__CLASS__

__CLASS__ 常量表示当前类的名称。它可以用于类内部,返回该类的名称。

示例:

<?php
class MyClass {
    function displayClass() {
        echo __CLASS__;  // 输出:MyClass
    }
}
$obj = new MyClass();
$obj->displayClass();
?>

__TRAIT__

__TRAIT__ 常量表示当前特征的名称。它可以在特征内部使用,返回该特征的名称。

示例:

<?php
trait MyTrait {
    function displayTrait() {
        echo __TRAIT__;  // 输出:MyTrait
    }
}
class MyClass {
    use MyTrait;
}
$obj = new MyClass();
$obj->displayTrait();
?>

__METHOD__

__METHOD__ 常量表示当前方法的名称。它返回调用该方法的名称,包括类名和方法名。

示例:

<?php
class MyClass {
    function myMethod() {
        echo __METHOD__;  // 输出:MyClass::myMethod
    }
}
$obj = new MyClass();
$obj->myMethod();
?>

__NAMESPACE__

__NAMESPACE__ 常量表示当前文件所在的命名空间。如果文件没有命名空间,则返回空字符串。

示例:

<?php
namespace MyNamespace;

echo __NAMESPACE__;  // 输出:MyNamespace
?>


使用魔术常量的示例

示例 1:输出当前文件的路径与行号

<?php
echo "This script is located at: " . __FILE__ . " on line " . __LINE__;
?>

输出:

This script is located at: /path/to/file.php on line 3

示例 2:调试日志

魔术常量常用于调试日志中,记录代码的执行位置。

<?php
function logMessage($message) {
    echo "Log message: $message in " . __METHOD__ . " at " . __LINE__ . "\n";
}

logMessage("An error occurred");
?>

输出:

Log message: An error occurred in logMessage at 3

示例 3:显示当前命名空间

<?php
namespace MyApp;

echo "The current namespace is: " . __NAMESPACE__;
?>

输出:

The current namespace is: MyApp


参考资料与出站链接


魔术常量是 PHP 中非常有用的工具,它们使得开发者可以轻松获取当前脚本的执行环境信息,对于调试、日志记录和代码追踪等场景特别有用。掌握这些魔术常量,可以大大提高代码的灵活性和可维护性。