(PHP 4, PHP 5, PHP 7, PHP 8)
define — 定义一个常量
constant_name
常量名。
注意:
可以用 define() 定义保留关键词甚至无效名称的常量,它的值可以(仅可以)通过 constant() 获取。 不过,不推荐这么做。
value
常量的值。在 PHP 5 中,value
必须是
scalar 值(int、
float、string、boolean 或
null
)。在 PHP 7 中, array 值也被允许。
常量还可以定义为 resource 类型,但并不推荐这样做,因为可能会有不可预知的行为发生。
case_insensitive
如果设置为 true
,则该常量不区分大小写。默认是区分大小写的。比如,
CONSTANT
和 Constant
代表了不同的值。
PHP 7.3.0 起,废弃定义不区分大小写的常量。自 PHP 8.0.0 开始,只接受 false
值,传递 true
将产生警告。
注意:
不区分大小写的常量以小写的形式储存。
成功时返回 true
, 或者在失败时返回 false
。
版本 | 说明 |
---|---|
8.0.0 |
现在传递 true 到 case_insensitive
会发出 E_WARNING 。仍然允许传递 false 。
|
7.3.0 |
废弃了 case_insensitive ,并将在 8.0.0 版中移除。
|
7.0.0 | 允许 array 的值。 |
示例 #1 定义常量
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // 输出 "Hello world."
echo Constant; // 输出 "Constant" 并导致 Notice
define("GREETING", "Hello you.", true);
echo GREETING; // 输出 "Hello you."
echo Greeting; // 输出 "Hello you."
// PHP 7 起就可以运行了
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // 输出 "cat"
?>
示例 #2 以保留名称定义常量
本例子说明了以 魔术常量相同名称定义常量的能力。由于行为结果过于令人迷惑,所以实践中不推荐。
<?php
var_dump(defined('__LINE__'));
var_dump(define('__LINE__', 'test'));
var_dump(constant('__LINE__'));
var_dump(__LINE__);
?>
以上例程会输出:
bool(false) bool(true) string(4) "test" int(5)