插件窝 干货文章 php常量有哪些

php常量有哪些

常量 定义 当前 CONSTANT 31    来源:    2025-03-18

在PHP中,常量(Constants)是在脚本执行期间不能被改变的值。常量一旦定义,就不能被重新定义或取消定义。PHP中的常量可以分为以下几类:

1. 预定义常量(Predefined Constants)

PHP提供了许多预定义的常量,这些常量在脚本中可以直接使用。以下是一些常见的预定义常量:

  • PHP_VERSION: 当前PHP的版本号。
  • PHP_OS: 当前操作系统的名称。
  • PHP_EOL: 当前系统的换行符。
  • PHP_INT_MAX: PHP支持的最大整数值。
  • PHP_INT_MIN: PHP支持的最小整数值。
  • PHP_FLOAT_MAX: PHP支持的最大浮点数值。
  • PHP_FLOAT_MIN: PHP支持的最小浮点数值。
  • DIRECTORY_SEPARATOR: 目录分隔符(在Windows上是\,在Linux上是/)。
  • PATH_SEPARATOR: 路径分隔符(在Windows上是;,在Linux上是:)。
  • __FILE__: 当前文件的完整路径和文件名。
  • __LINE__: 当前行号。
  • __DIR__: 当前文件所在的目录。
  • __FUNCTION__: 当前函数的名称。
  • __CLASS__: 当前类的名称。
  • __METHOD__: 当前方法的名称。
  • __NAMESPACE__: 当前命名空间的名称。

2. 魔术常量(Magic Constants)

魔术常量是PHP提供的特殊常量,它们的值会根据使用的位置而变化。以下是一些常见的魔术常量:

  • __LINE__: 当前行号。
  • __FILE__: 当前文件的完整路径和文件名。
  • __DIR__: 当前文件所在的目录。
  • __FUNCTION__: 当前函数的名称。
  • __CLASS__: 当前类的名称。
  • __TRAIT__: 当前Trait的名称。
  • __METHOD__: 当前方法的名称。
  • __NAMESPACE__: 当前命名空间的名称。

3. 用户定义常量(User-defined Constants)

用户可以通过define()函数或const关键字来定义自己的常量。用户定义的常量在脚本中可以被多次使用,但不能被重新定义或取消定义。

  • 使用define()函数定义常量:

    define("MY_CONSTANT", "Hello, World!");
    echo MY_CONSTANT; // 输出: Hello, World!
    
  • 使用const关键字定义常量:

    const MY_CONSTANT = "Hello, World!";
    echo MY_CONSTANT; // 输出: Hello, World!
    

4. 类常量(Class Constants)

类常量是在类中定义的常量,使用const关键字定义。类常量可以通过类名或类的实例来访问。

class MyClass {
    const MY_CONSTANT = "Hello, World!";
}

echo MyClass::MY_CONSTANT; // 输出: Hello, World!

5. 命名空间常量(Namespace Constants)

在命名空间中定义的常量可以通过命名空间来访问。

namespace MyNamespace;

const MY_CONSTANT = "Hello, World!";

echo \MyNamespace\MY_CONSTANT; // 输出: Hello, World!

6. 全局常量(Global Constants)

全局常量是在全局范围内定义的常量,可以在脚本的任何地方访问。

define("GLOBAL_CONSTANT", "This is a global constant.");

function test() {
    echo GLOBAL_CONSTANT; // 输出: This is a global constant.
}

test();

7. 常量与变量的区别

  • 常量在定义后不能被重新赋值或取消定义。
  • 常量名不需要以$符号开头。
  • 常量可以在任何地方定义和访问,不受作用域限制。
  • 常量的值只能是标量(整数、浮点数、字符串、布尔值)或数组。

8. 常量的命名规则

  • 常量名通常使用大写字母和下划线来命名,例如MY_CONSTANT
  • 常量名区分大小写,但可以通过define()函数的第三个参数设置为不区分大小写。
define("MY_CONSTANT", "Hello, World!", true);
echo my_constant; // 输出: Hello, World!

9. 常量的作用域

  • 常量的作用域是全局的,可以在脚本的任何地方访问。
  • 类常量的作用域是类内部,可以通过类名或类的实例访问。

10. 常量的使用场景

  • 用于存储不会改变的值,如配置参数、路径、版本号等。
  • 用于定义一些固定的值,如数学常数、状态码等。

总结

PHP中的常量包括预定义常量、魔术常量、用户定义常量、类常量、命名空间常量等。常量的值在定义后不能被改变,且常量的作用域是全局的。常量的命名通常使用大写字母和下划线,且常量名区分大小写。