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 => '未知', }; }