PHP 类常量
1. PHP 类常量
类常量(Class Constants)用于在类中定义一些一旦设定就不可更改的固定值。既然是常量,那它就像某些客观真理一样——一旦定义,在程序的任何地方都别想再去修改它。
类常量在类内部使用 const 关键字声明。与普通属性不同,类常量不需要使用访问修饰符(虽然 PHP 7.1+ 支持常量可见性,但默认是 public),且在定义时不需要加 $ 符号。
类常量是区分大小写的,但按照编程规范,我们通常建议全部使用大写字母。
2. 在类外部访问常量
我们可以通过类名直接从类外部访问常量,而无需先实例化该类。
访问类常量需要使用作用域解析运算符(Scope Resolution Operator),即双冒号 ::。
代码示例:
<?php
class Goodbye {
const LEAVING_MESSAGE = "感谢访问 Begindev.com!";
}
// 直接通过 类名::常量名 访问
echo Goodbye::LEAVING_MESSAGE;
?>3. 在类内部访问常量
如果您需要在类的方法内部引用该类定义的常量,可以使用 self 关键字,后跟作用域解析运算符 :: 以及常量名称。
self 引用的是当前类本身,而不是某个具体的对象实例。
代码示例:
<?php
class Goodbye {
const LEAVING_MESSAGE = "感谢访问 Begindev.com!";
public function byebye() {
// 在类内部使用 self 访问
echo self::LEAVING_MESSAGE;
}
}
$goodbye = new Goodbye();
$goodbye->byebye();
?>4. 常量的可见性 (PHP 7.1+)
从 PHP 7.1 版本开始,类常量也支持访问修饰符(public、protected 或 private)。这为您提供了更精细的控制,决定哪些常量可以被外部访问,哪些仅限类内部或继承体系使用。
代码示例:
<?php
class Greeting {
// 仅限类内部访问
private const SECRET_GREETING = "你好,这只是内部悄悄话。";
// 默认是 public
const PUBLIC_GREETING = "大家好!";
}
?>设计建议: 当您有一组与类逻辑紧密相关且永远不会改变的数据(例如配置信息、状态码或物理常数)时,使用类常量是最佳实践。这比使用全局常量(define)更具组织性,也比使用静态属性更安全。