定义常量下面是我在过去在不同的命名空间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