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