魔术常量

2025年3月22日 | 阅读4分钟

魔术常量是 PHP 中预定义的常量,它们的取值会根据其在代码中的使用位置而变化。它们以双下划线(__)开头,并以双下划线(__)结尾。

它们与其他预定义常量类似,但由于它们的值会根据上下文而改变,因此被称为 **魔术** 常量。

PHP 中共有 **九个** 魔术常量。其中八个魔术常量以双下划线(__)开头和结尾。

  1. __LINE__
  2. __FILE__
  3. __DIR__
  4. __FUNCTION__
  5. __CLASS__
  6. __TRAIT__
  7. __METHOD__
  8. __NAMESPACE__
  9. ClassName::class

与常规常量不同,所有这些常量都在编译时而不是运行时解析。魔术常量不区分大小写。

Changelog

版本描述
5.3.0添加了 **__DIR__** 和 **__NAMESPACE__** 魔术常量
5.4.0添加了 **__TRAIT__** 魔术常量
5.5.0添加了 ::class 魔术常量

所有常量均在下方通过示例代码进行定义

1. __LINE__

它返回文件当前行的行号,在该行号处使用了此常量。

示例

立即执行

输出

Example for __LINE__
You are at line number 4

2. __FILE__

此魔术常量返回已执行文件的完整路径,其中存储了该文件。如果它在 include 语句中使用,则返回被包含文件的名称。

示例

立即执行

输出

Example for __FILE__
D:\xampp\htdocs\program\magic.php

3. __DIR__

它返回已执行文件的完整目录路径。此魔术常量返回的路径等同于 dirname(__FILE__)。除非是根目录,否则此魔术常量不带尾部斜杠。

示例

立即执行

输出

Example for __DIR__
D:\xampp\htdocs\program D:\xampp\htdocs\program

4. __FUNCTION__

此魔术常量返回函数名,在该函数名处使用了此常量。如果它在任何函数外部使用,则返回空字符串。

示例

立即执行

输出

Example for __FUNCTION__T
The function name is test Hi

5. __CLASS__

它返回类名,在该类名处使用了此魔术常量。__CLASS__ 常量在 trait 中也有效。

示例

立即执行

输出

Example for __CLASS__JTP
JTP base

6. __TRAIT__

此魔术常量返回 trait 名称,在该 trait 名称处使用了它。

示例

立即执行

输出

Example for __TRAIT__
created_trait

7. __METHOD__

它返回包含此魔术常量的类方法的名称。返回的方法名与其声明时相同。

示例

立即执行

输出

Example for __METHOD__
method:: construct method:: meth_fun

8. __NAMESPACE__

它返回当前使用的命名空间。

示例

立即执行

输出

Example for __NAMESPACE__
This line will print on calling namespace.

9. ClassName::class

此魔术常量不以双下划线(__)开头和结尾。它返回 ClassName 的完全限定名。ClassName::class 在 **PHP 5.5.0** 中添加。对于带有命名空间的类非常有用。

示例

立即执行

输出

Example for CLASSNAME::CLASS
Technical_Portal\tpointtech

注意:请记住,命名空间必须是脚本中的第一条语句,或者紧跟在任何 declare 调用之后,否则将导致致命错误。


下一个主题PHP 数据类型