0

0

php整型常量定义 php怎么在类中定义整型常量【示范】

穿越時空

穿越時空

发布时间:2026-03-01 19:01:11

|

913人浏览过

|

来源于php中文网

原创

类中定义整型常量必须用const而非define(),且需编译期确定的整数字面量;php 7.1+支持public/private/protected const,旧版仅支持隐式public const;超大整数需注意平台限制,动态计算应改用静态方法或match。

php整型常量定义 php怎么在类中定义整型常量【示范】

类中定义整型常量用 const,不是 define()

PHP 类里不能用全局函数 define() 定义常量——它只作用于全局命名空间,类内部调用会报 Warning: define() cannot be used in a class method。必须用 const 关键字,且必须在声明时直接赋值整型字面量(如 420xFF),不能是表达式或函数调用。

常见错误:写成 const STATUS_ACTIVE = intval('1');const MAX_RETRY = pow(2, 3); —— PHP 会在编译期报错 Constant expression contains invalid operations

  • const 声明必须是编译期可确定的值:支持整数字面量、负号、进制前缀(0b0x0)、位运算符(|&^)等简单组合
  • 不支持变量、函数调用、数组索引、类常量引用(除非是同一类中已定义的、且顺序在前的常量)
  • 从 PHP 8.1 起支持枚举(enum),但那是另一套机制,不替代 const

public const 是 PHP 7.1+ 才支持的语法

老项目如果还在用 PHP 7.0 或更早版本,public const STATUS_OK = 200; 会直接解析失败,报 Parse error: syntax error, unexpected 'const'(因为旧版只允许 const STATUS_OK = 200;,隐式 public)。

所以得看环境:PHP 7.1+ 推荐显式加访问修饰符,明确意图;PHP 7.0 及以下只能省略,且所有类常量默认就是 public,无法设为 private/protected。

立即学习PHP免费学习笔记(深入)”;

Avactis购物车
Avactis购物车

Avactis是一个强大的PHP在线购物系统拥有多个版本包括开源版本。它具备一个在线购物系统所需要的所有功能从产品到会员管理,订单和营销。可以无限分类和为产品指定任务数量的图片(支持自动生成缩略图)。使用自定义字段功能,让你可以更好地定义一个产品。该系统提供以非常灵活的方式来创建任意类型的促销活动如设置折扣代码,基于价格的折扣或基于数量的折扣等。

下载
  • PHP 7.1+ 支持 public constprivate constprotected const
  • PHP 7.0 及以下只接受 const NAME = VALUE;,等价于 public const
  • 即使 PHP 7.1+,private const 也无法被子类继承,这点和 private static 一致

整型常量值过大时注意平台整数范围

PHP 的整型范围取决于系统架构:32 位系统最大是 2147483647PHP_INT_MAX),64 位通常是 9223372036854775807。如果你写 const BIG_NUM = 99999999999999999999;,在 32 位环境里会被静默转成 float,再用 is_int() 判断会返回 false。

这不是语法错误,而是运行时类型漂移,容易在条件判断或 switch 中出问题。

  • var_dump() 检查常量实际类型,别只信名字叫 “INT”
  • 跨平台项目建议避免超过 PHP_INT_MAX 的字面量,或改用字符串 + bcmath 处理
  • 十六进制写法(如 0xFFFFFFFF)同样受平台限制,不是“绝对大”

类常量不能动态赋值,但可以用 match 或静态方法模拟逻辑

有人想根据配置动态算出常量值,比如 const RETRY_DELAY = $config['retry'] * 1000; —— 这在语法上完全不合法,const 不接受任何变量上下文。

真有这种需求,得退一步:用 private static 属性 + 静态方法封装,或者用 match(PHP 8.0+)做映射。虽然不叫“常量”,但效果可控。

  • 错误示范:const TIMEOUT = self::$defaultTimeout * 1000; → 解析失败
  • 可行替代:public static function getTimeout(): int { return (int)($_ENV['TIMEOUT_MS'] ?? 5000); }
  • 若需 switch-like 行为,优先用 match 而非 if-else,它更接近常量语义

整型常量的“整”字只是说值是整数,不代表定义方式能绕过 PHP 的编译期约束。最常翻车的地方,其实是把“想让它不变”和“语言允许它不变”混为一谈——前者是业务意图,后者得靠语法和版本兜底。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

592

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

105

2025.10.23

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1560

2023.10.24

typedef和define区别
typedef和define区别

typedef和define区别在类型检查、作用范围、可读性、错误处理和内存占用等。本专题为大家提供typedef和define相关的文章、下载、课程内容,供大家免费下载体验。

118

2023.09.26

define的用法
define的用法

define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。更多关于define的用法的内容,大家可以阅读本专题下的文章。

360

2023.10.11

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1560

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

240

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

128

2025.10.17

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

24

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Swoft2.x速学之http api篇课程
Swoft2.x速学之http api篇课程

共16课时 | 1万人学习

php初学者入门课程
php初学者入门课程

共10课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号