这两者有什么区别:
use Exception;
use \Exception;
或者这些:
use Foo\Bar;
use \Foo\Bar;
根据手册:
对于命名空间名称(完全限定命名空间名称包含命名空间分隔符的,例如Foo\Bar,而不是全局名称,不包含命名空间分隔符,例如FooBar),前导反斜杠是不必要且不被允许的,因为导入名称必须是完全限定的,并且不会相对于当前命名空间处理。
但我并不太理解这个说明,因为上述所有变量都可以正常工作,即它绝对不是“不被允许”的。
在查看zend_do_use
之后,发现只有以下情况下才会使用is_global
(当存在前导反斜杠时设置)警告:
namespace {
use Exception;
}
这提示我:“非复合名称'Exception'的use语句没有效果”。(虽然使用 use \Exception
也同样没有效果,但不会产生警告。)
那么:我错过了什么吗?实际上有什么区别吗?