定義常量下面是我在過去在不同的命名空間PHP
//file: bar.php
defined('MYC') or define('MYC', 'val1');
//file: bootstrap.php
define('MYC', 'val2');
做我將包括bootstrap.php中首先這將設置MYC = 'val2'
。
現在bar.php是在\富\酒吧的命名空間,即說
//file: bar.php
namespace Foo\Bar;
defined('MYC') or define('MYC', 'val1');
//file: bootstrap.php
//following doesn't work
//const \Foo\Bar\MYC = 'val2';
//?? what do I do here ??
因爲define()函數定義了全局常量,所以你的代碼仍然可以工作,而不管命名空間是什麼,因爲define()函數定義了全局常量,它們在任何命名空間中都是可見的。 –
謝謝,我通過實驗得知了這一點,並且我也認爲我不能在'namespace Foo \ Bar'中做'const MYC ='val1';'所以我想我必須忍受shitty_long_namespaced_global_constant_names :( – Sudhi
define ()不是名稱空間感知的,你必須執行'define(__NAMESPACE__。'\ CONST_IN_NAME_SPACE')'讓它在當前命名空間中創建一個常量,或者,如果你不使用'const'必須在定義它之前計算常量的值 – GordonM