在 PHP 中导入类和命名空间:前导反斜杠有什么区别?
这两者之间有什么区别:
use Exception;
use \Exception;
或者那些:
use Foo\Bar;
use \Foo\Bar;
手册说:
请注意,对于命名空间名称(包含命名空间分隔符的完全限定命名空间名称,如 Foo\Bar,而不是不包含命名空间的全局名称,如 FooBar),前导反斜杠是不必要的,也是不允许的,因为导入名称必须是完全限定的,并且不相对于当前命名空间进行处理。
但我并不真正理解这一点,因为上述所有变体都有效,即它绝对不是“不允许的”。
查看显示,(设置,当存在前导反斜杠时)仅用于在以下情况下的警告:zend_do_use
is_global
namespace {
use Exception;
}
它告诉我:“具有非复合名称'Exception'的使用声明没有效果”。(虽然做同样的事情会同样没有效果,但不会发出警告。use \Exception
所以:我错过了什么吗?真的有什么区别吗?