PHP 常量

常量是一旦定义就不能改变的值,在整个脚本中全局有效。

定义常量

PHP 实例
// define() 函数定义
define('MAX_SIZE', 100);
define('SITE_NAME', 'PHP 教程');
define('DEBUG', true);

echo MAX_SIZE; // 100 echo SITE_NAME; // PHP 教程 ``

const 关键字

`php // const 在编译时定义,只能用于顶层作用域和类中 const VERSION = '1.0.0'; const PI = 3.14159;

echo VERSION; // 1.0.0 `

define vs const

特性define()const
定义时机运行时编译时
条件定义支持不支持
类中使用不支持支持
数组值PHP 7+ 支持支持

常量命名规范

`php // 推荐全大写 + 下划线 define('DB_HOST', 'localhost'); define('DB_PORT', 3306); define('MAX_UPLOAD_SIZE', 2 1024 1024);

// 数组常量(PHP 7+) define('ALLOWED_TYPES', ['jpg', 'png', 'gif']); echo ALLOWED_TYPES[0]; // jpg `

魔术常量

PHP 内置了几个随位置变化的魔术常量:

常量说明
__LINE__当前行号
__FILE__当前文件完整路径
__DIR__当前文件所在目录
__FUNCTION__当前函数名
__CLASS__当前类名
__METHOD__当前方法名
__NAMESPACE__当前命名空间
`php echo __LINE__; // 输出当前行号 echo __FILE__; // /var/www/html/index.php echo __DIR__; // /var/www/html

function test() { echo __FUNCTION__; // test } `

类常量

`php class Config { const VERSION = '2.0.0'; const MAX_RETRY = 3; const DB_CHARSET = 'utf8mb4';

public function getVersion(): string { return self::VERSION; // 类内用 self:: } }

echo Config::VERSION; // 类外用 类名:: echo Config::MAX_RETRY; // 3 `

实际应用场景

``php // 配置常量 define('BASE_URL', 'https://phpe.cn'); define('UPLOAD_DIR', __DIR__ . '/uploads/'); define('CACHE_TTL', 3600);

// 状态码常量 define('STATUS_ACTIVE', 1); define('STATUS_INACTIVE', 0); define('STATUS_DELETED', -1);

// 使用 function getUserStatus(int $status): string { return match($status) { STATUS_ACTIVE => '正常', STATUS_INACTIVE => '禁用', STATUS_DELETED => '已删除', default => '未知', }; }