非限定名称,或不包含前缀的类名称,例如 $a=new foo(); 或 foo::staticmethod();。如果当前命名空间是 currentnamespace,foo 将被解析为 currentnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo。 警告:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。
这个话什么意思?我做实验理解:
非限定名称
就是调用function class $的时候不加任何前缀,
就是调用代码自己所在文件中的 class 或者 $ 或者 function,这样理解对吗?
看源码吧
由此可见,对于namespace和use语句,其中的类使用的是全名,而在其它地方必须使用反斜杠开头表示类的全名,否则其全名是 反斜杠 + 当前的namespace + 类名