规则
- 常量是一个简单值的标识符。该值在脚本中不能改变。
- 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
- 注意: 常量在整个脚本中都可以使用。
define() 函数
设置常量,使用 define() 函数
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
该函数有三个参数:
- name:必选参数,常量名称,即标志符。
- value:必选参数,常量的值。
- case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。注:PHP 7.3.0 起废弃了定义大小写不敏感的常量,并将在 8.0.0 版中移除。
例:
define("GREETING", "欢迎访问 csdn.com");
echo GREETING; // 输出 "欢迎访问 csdn.com"
const
使用 const 关键字定义常量时,PHP 5.6 之前只能包含标量数据(boolean,integer,float 和 string)。从 PHP 5.6 开始,可以将常量定义为一个表达式,也可以定义为一个 array。还可以定义 resource 为常量,但应尽量避免,因为可能会造成不可预料的结果。
// 以下代码在 PHP 5.3.0 后可以正常工作
const CONSTANT = 'Hello World';
echo CONSTANT;
// PHP 5.6.0 后的写法
const ANOTHER_CONST = CONSTANT.'; Goodbye World';
echo ANOTHER_CONST;
const ANIMALS = array('dog', 'cat', 'bird');
echo ANIMALS[1]; // 将输出 "cat"
// PHP 7 中的写法
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // 将输出 "cat"
注意:和使用 define() 来定义常量相反的是,使用 const 关键字定义常量必须处于最顶端的作用区域,因为用此方法是在编译时定义的。这就意味着不能在函数内,循环内以及 if 或 try/catch 语句之内用 const 来定义常量。
常量和变量有如下不同
- 常量前面没有美元符号($);
- PHP 5.3 之前,常量只能用 define() 函数定义,而不能通过赋值语句;
- 常量可以不用理会变量的作用域而在任何地方定义和访问;
- 常量一旦定义就不能被重新定义或者取消定义;
- 常量的值只能是标量值。从 PHP 5.6 开始可以用 const 关键字来定义数组常量,从 PHP 7 开始也可以用 define() 函数来定义。你可以在常量标量表达式中使用数组(例如 const FOO = array(1,2,3)[0];),但是要求最终的结果必须是一个允许的类型的值。
魔术常量
所谓的魔术常量,它们其实不是常量。有八个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 LINE 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写。