有一種方法可以定義與內建特殊常數名稱相同的命名空間常數,使用 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); // 將會顯示 string(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 已經定義
?>