有一种方法可以使用 define 函数并将第三个参数 case_insensitive 设置为 false 来定义作为特殊内置常量的命名空间常量。
<?php
命名空间 foo;
define(__NAMESPACE__ . '\NULL', 10); // 在当前命名空间中定义常量 NULL
var_dump(NULL); // 将显示 10
var_dump(null); // 将显示 NULL
?>
无需像通常那样在对 define() 的调用中指定命名空间
<?php
命名空间 foo;
define(INI_ALL, 'bar'); // 会产生警告 - 常量 INI_ALL 已定义。但是:
define(__NAMESPACE__ . '\INI_ALL', 'bar'); // 在当前命名空间中定义常量 INI_ALL
var_dump(INI_ALL); // 将显示 string(3)"bar"。到目前为止没有任何意外。但是:
define('NULL', 10); // 在当前命名空间中定义常量 NULL…
var_dump(NULL); // 将显示 10
var_dump(null); // 将显示 NULL
?>
如果参数 case_insensitive 设置为 true
<?php
命名空间 foo;
define (__NAMESPACE__ . '\NULL', 10, true); // 会产生警告 - 常量 null 已定义
?>