在面向对象程序设计(OOP)中,PHP 支持将常量定义为类的属性。这些被称为 "类常量",它们是特定于类并且可以在整个类范围内访问的常量。
声明类常量
要声明一个类常量,必须在类的内部使用 const
关键字。通常情况下,类常量的名称都是大写的。例如:
class MyClass {
const CONSTANT = 'constant value';
}
在上述示例中,我们声明了一个名为 CONSTANT
的类常量,其值为字符串 'constant value'
。
访问类常量
要访问某个类的常量,必须使用其完全限定名称(即包括类名和范围解析操作符)。对于非静态常量,也可以通过一个类的实例来访问它们。但是,从 PHP 5.3.0 开始,可以直接使用类名而不创建类的实例。
echo MyClass::CONSTANT; // 输出 'constant value'
魔术常量
PHP 还提供了一些 "魔术常量",它们是预定义的类常量,可以在任何地方使用。这些常量包括:
-
__LINE__
- 当前行号 -
__FILE__
- 当前文件名 -
__DIR__
- 当前目录 -
__FUNCTION__
- 当前函数名 -
__CLASS__
- 当前类名 -
__TRAIT__
- 当前 trait 名 -
__METHOD__
- 当前方法名 -
__NAMESPACE__
- 当前命名空间名
例如:
class MyClass {
public function exampleFunction() {
echo __CLASS__; // 输出 'MyClass'
echo __METHOD__; // 输出 'MyClass::exampleFunction'
}
}
常量的优势和使用场景
类常量具有以下优势:
- 可读性 - 相比于定义一个全局变量或者在代码中直接使用字符串,类常量更具有描述性并且易于理解。
- 命名空间 - 类常量隶属于其所声明的类,不会与其他常量发生冲突。
- 安全性 - 由于类常量是常量,因此它们在运行时无法被修改或者重新定义。
类常量常用于以下场景:
- 定义数据库表的列名
- 定义错误码和消息
- 配置应用程序设置等