一、 开场白:变量是个“海王”,常量才是“铁憨憨”
咱们写PHP的,谁没声明过几百个变量?$name、$age,想改就改,灵活得像个“海王”。但代码世界里,有时候我们需要一些“铁憨憨”——一旦认定,至死不渝。这就是常量。
你可以把常量想象成你代码里的纹身(或者说是“钢印”)。你深思熟虑后决定了一个值,把它刻在皮肤(代码)上,以后想改?那就得付出点“血”的代价(重构代码)。比如,圆周率π(3.1415926...)、一天有24小时、网站的根目录路径……这些值从逻辑上讲,在程序运行中根本不应该被改变。
用一个错误的变量赋值比喻来解释:
// 变量:你的心情,说变就变
$mood = '开心';
$mood = '烦躁'; // 没问题,瞬间变脸
// 常量:你的血型,生来注定
define('BLOOD_TYPE', 'O型');
// BLOOD_TYPE = 'A型'; // 致命错误!想改血型?下辈子吧!
所以,使用常量的第一个核心思想:定义那些在业务逻辑或系统环境中,自始至终都保持不变的值。
二、 定义常量:define() 与 const,哪个是你的菜?
PHP给了我们两把“纹身枪”来刻下常量:古老的define()和后来居上的const。它们看起来干一样的事,但细节上可大有不同。
1. define():江湖老炮,灵活不羁
define('SITE_NAME', '我的摸鱼博客');
define('MAX_LOGIN_ATTEMPTS', 5);
define('PI', 3.1415926535);
define('IS_DEBUG', true); // 常量也可以是布尔值哦!
- 特点:可在运行时(任何地方,甚至在函数或条件判断内部)动态定义。
- 大小写:默认区分大小写。但第三个参数传
true就能变成“大小写模糊患者”:define('TASTE', '酸甜', true); echo TaStE; // 输出“酸甜”。不过这个功能…咱尽量别用,容易让队友 confusion。
2. const:后起之秀,严谨规矩
const SITE_NAME = '我的正经项目';
const MAX_USERS = 1000;
// const IS_OPEN = get_config('is_open'); // 错误!const不接受函数返回值或变量
- 特点:在编译时定义,必须在全局作用域或类作用的顶层声明。不能在函数、循环或
if语句里用。所以它更静态,性能理论上微乎其微地好一丢丢。 - 名字:必须遵循和变量一样的命名规则(字母或下划线开头)。
3. 主要区别与选择建议
| 特性 |
|
|
| 定义时机 |
运行时 |
编译时 |
| 作用域 </ |

最低0.47元/天 解锁文章
3748

被折叠的 条评论
为什么被折叠?



