这两者有什么区别:
use Exception;
use \Exception;
或者那些:
use Foo\Bar;
use \Foo\Bar;
手册说:
请注意,对于命名空间名称(包含命名空间分隔符的完全限定的命名空间名称,例如 Foo\Bar,而不是不包含命名空间分隔符的全局名称,例如 FooBar),前导反斜杠是不必要且不允许的,因为导入名称必须是完全限定的,并且不相对于当前命名空间进行处理。
但我不太明白这一点,因为上述所有变体都有效,即它绝对不是“不允许的”。
研究zend_do_use
表明,is_global
(设置,当有前导反斜杠时)仅在以下情况下用于警告:
namespace {
use Exception;
}
这告诉我:“使用非复合名称‘异常’的语句无效”。(虽然做同样的事情use \Exception
会产生同样的影响,但不会发出警告。)
所以:我错过了什么吗?真的有什么区别吗?