news 2026/6/9 8:31:13

PHP常量与枚举定义最佳实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP常量与枚举定义最佳实践

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";
?>

常量和枚举的使用原则。常量用于不变的值如配置、状态码。枚举用于有限的一组选项如订单状态、用户角色。枚举比常量更安全,因为类型检查可以确保只使用有效的值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 8:29:01

探寻成都展馆设计新势力,哪些企业值得你深入了解?

想在成都找展馆设计新势力? 以下几家企业值得重点关注,它们凭借独特优势在本地市场快速崛起,尤其适合追求创新、性价比或本地化服务的项目。1. 四川义扬创意装饰工程有限公司核心标签:文创科技融合、全案总包服务、全链条服务商、…

作者头像 李华
网站建设 2026/6/9 8:23:04

IDEA 2024.1版效率翻倍秘籍:这20个高频快捷键组合,让你编码快到飞起

IDEA 2024.1版效率翻倍秘籍:20个高频快捷键组合实战指南作为一名长期使用IntelliJ IDEA进行Java开发的工程师,我深刻体会到熟练使用快捷键对编码效率的提升有多么显著。在2024.1版本中,JetBrains团队又优化了一批快捷键组合,结合我…

作者头像 李华
网站建设 2026/6/9 8:23:02

如何快速解决网易云音乐NCM格式限制:NCMconverter完整使用指南

如何快速解决网易云音乐NCM格式限制:NCMconverter完整使用指南 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 你是否遇到过从网易云音乐下载的歌曲无法在其他播放器…

作者头像 李华