PHP常量与枚举定义最佳实践
常量和枚举用于定义固定不变的值。PHP8.1引入的枚举让常量管理更规范。今天说说常量和枚举的用法。
PHP常量用define或const定义。
```php
define('APP_NAME', 'MyApp');
define('APP_VERSION', '1.0.0');
define('MAX_UPLOAD_SIZE', 10 * 1024 * 1024);
const DB_HOST = 'localhost';
const DB_PORT = 3306;
const API_TIMEOUT = 30;
echo APP_NAME . "\n";
echo DB_HOST . "\n";
?>
类常量用const定义。
```php
class User
{
const STATUS_ACTIVE = 'active';
const STATUS_INACTIVE = 'inactive';
const STATUS_BANNED = 'banned';
const ROLES = ['admin', 'editor', 'user'];
public const MAX_LOGIN_ATTEMPTS = 5;
private const SALT_LENGTH = 32;
}
echo User::STATUS_ACTIVE . "\n";
echo User::MAX_LOGIN_ATTEMPTS . "\n";
?>
PHP8.1枚举。
```php
enum OrderStatus: string
{
case Pending = 'pending';
case Paid = 'paid';
case Shipped = 'shipped';
case Delivered = 'delivered';
case Cancelled = 'cancelled';
public function label(): string
{
return match ($this) {
self::Pending => '待支付',
self::Paid => '已支付',
self::Shipped => '已发货',
self::Delivered => '已签收',
self::Cancelled => '已取消',
};
}
public function isActive(): bool
{
return $this !== self::Cancelled;
}
}
$status = OrderStatus::Paid;
echo $status->label() . "\n";
echo $status->isActive() ? '活跃' : '不活跃' . "\n";
// 从数据库值创建
$dbStatus = 'paid';
$status = OrderStatus::from($dbStatus);
echo $status->label() . "\n";
?>
常量数组的定义。
```php
const CONFIG = [
'database' => ['host' => 'localhost', 'port' => 3306],
'redis' => ['host' => 'localhost', 'port' => 6379],
];
define('ERROR_MESSAGES', [
400 => '错误请求',
401 => '未授权',
404 => '未找到',
500 => '服务器错误',
]);
echo ERROR_MESSAGES[404] . "\n";
?>
常量和枚举的使用原则。常量用于不变的值如配置、状态码。枚举用于有限的一组选项如订单状态、用户角色。枚举比常量更安全,因为类型检查可以确保只使用有效的值。
PHP常量与枚举定义最佳实践
张小明
前端开发工程师
Anthropic-claude code/codex+cc switch配置(无需修改https proxy版!!避免更改ip对其他下载配置影响)
环境准备(这里以windwos11为例): 1. claude code安装下载 下载链接:Claude Code by Anthropic | AI Coding Agent, Terminal, IDE 2. node&npm下载 下载链接:Node.js — 下载 Node.js(一般会选择…
告别锚框!用CenterPoint在Waymo数据集上实现3D目标检测,新手也能跑通的保姆级教程
从零实现CenterPoint:3D目标检测新范式实战指南为什么我们需要重新思考3D目标检测?在自动驾驶和机器人领域,3D目标检测一直是核心挑战之一。传统方法通常依赖于锚框(anchor boxes)来定位和识别物体,但这种方…
探寻成都展馆设计新势力,哪些企业值得你深入了解?
想在成都找展馆设计新势力? 以下几家企业值得重点关注,它们凭借独特优势在本地市场快速崛起,尤其适合追求创新、性价比或本地化服务的项目。1. 四川义扬创意装饰工程有限公司核心标签:文创科技融合、全案总包服务、全链条服务商、…
IDEA 2024.1版效率翻倍秘籍:这20个高频快捷键组合,让你编码快到飞起
IDEA 2024.1版效率翻倍秘籍:20个高频快捷键组合实战指南作为一名长期使用IntelliJ IDEA进行Java开发的工程师,我深刻体会到熟练使用快捷键对编码效率的提升有多么显著。在2024.1版本中,JetBrains团队又优化了一批快捷键组合,结合我…
如何快速解决网易云音乐NCM格式限制:NCMconverter完整使用指南
如何快速解决网易云音乐NCM格式限制:NCMconverter完整使用指南 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 你是否遇到过从网易云音乐下载的歌曲无法在其他播放器…
从握手协议到边沿检测:用Verilog代码详解单bit信号跨时钟域的两种核心玩法
从握手协议到边沿检测:用Verilog代码详解单bit信号跨时钟域的两种核心玩法在FPGA和数字IC设计中,跨时钟域(CDC)问题就像电路世界中的"语言障碍"——不同时钟域的信号需要相互通信,却因为"心跳节奏"…