Loading... # [最新PHP中的const和define 定义常量的区别](https://blog.p2hp.com/archives/7262) 常量是一个简单的标识符。在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量)。常量大小写敏感(php 7.4*)。通常常量标识符总是大写的。 1. const 通常用于类成员变量的定义。define不可用于类成员变量的定义,可用于全局常量。 2. const是在编译时定义, 不能在函数,循环及if条件中使用; 函数define() 定义的常量是在执行define()函数时定义的,因此可以在函数内、循环内、if语句内等函数能够被调用的任何地方使用define()函数定义常量。 <?php const FOO='BAR';//有效的valid define('FOO', 'BAR');// 有效的valid if (1) { const FOO='BAR';//无效的invalid } if (1) { define('FOO', 'BAR');// 有效的valid } 3 .const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感(php7.4被弃用)。 例如: <?php define('FOO', 'BAR', true); //不区分大小写的常量的声明已从php7.4被弃用。现在将其TRUE作为第三个参数传递 给define()会生成弃用警告。不建议使用不区分大小写的常量 const BAR =123; echo BAR; echo FOO;// BAR echo foo; // BAR 4. const的常量命名只能用直白的文本,而define()允许你用任何表达式来对常量命名。这样我们就可以执行以下操作: for ($i = 0; $i < 32; ++$i) { define('BIT_'. $i, 1<< $i); } 5. 类常量可见性从 php7.4开始支持. class ConstDemo { const PUBLIC_CONST_A=1; public const PUBLIC_CONST_B=2; protected const PROTECTED_CONST=3; private const PRIVATE_CONST=4; } 6. 需要注意的一点是,const可以在class和interface当中使用定义类常量 ,而define是做不到这一点的,但define可以在类方法中使用: class Foo { const BAR=2; // 有效 } class Baz { define('QUX', 2); // 无效 public function foo( define('QUX', 2); // 有效 ) } 7. const默认在当前的namespace下定义常量,而使用define则需要你写明整个namespace的完整路径: 命名空间的示例 namespace A\B\C; // 如果要定义常量 A\B\C\FOO: const FOO = 'BAR'; define('A\B\C\FOO', 'BAR'); namespace A{ const A1 = 1; //处在命名空间A中 define('A2', 2); //全局可调用 define('A\A3', 3); //处在命名空间A中 } namespace B{ use const\A\A1; use const\A\A3; echo A1; echo A2; //全局调用 echo A3; } 最后修改:2023 年 08 月 11 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏