PHP OOP 类的常量

在面向对象程序设计(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'
    }
}

常量的优势和使用场景

类常量具有以下优势:

  • 可读性 - 相比于定义一个全局变量或者在代码中直接使用字符串,类常量更具有描述性并且易于理解。
  • 命名空间 - 类常量隶属于其所声明的类,不会与其他常量发生冲突。
  • 安全性 - 由于类常量是常量,因此它们在运行时无法被修改或者重新定义。

类常量常用于以下场景:

  • 定义数据库表的列名
  • 定义错误码和消息
  • 配置应用程序设置等