面相对象之命名空间注意事项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面相对象之命名空间注意事项相关的知识,希望对你有一定的参考价值。

1、定义命名空间时,命名空间开头不能有反转义符“\”,即 namespace \A\B\C; 是错误的,此命名空间将不起作用!namespace A\B\C; 才是对的。

2、导入命名空间时,如果命名空间是一级的,则开头一定要加反转义符“\”,即 use A; 是错误的,use \A; 才是对的。

3、导入命名空间时,如果命名空间是二级或更多级的,则开头有没有加反转义符“\”效果都是一样,即都表示 完全限定名称,如 use A\B\C; 跟 use \A\B\C; 是等效的。(如果是多级的,建议开头不加“\”)

4、对于“非限定名称函数/常量”,如果 当前命名空间 有,则调用当前命名空间下的该 函数/常量,否则,继续到 全局命名空间 下去找,有,则调用,没有,则报错!

5、对于“非限定名称类”,如果 当前命名看空间 有,则调用当前命名空间下的该 类,没有,则调用__autoload函数,还没有的话,就直接报错!即不会继续到 全局命名空间 下去找了。

6、对于“限定名称函数/常量”,如果 当前命名看空间 有,则调用当前命名空间下的该 限定名称函数/常量,没有,则直接报错!即不会继续到 全局命名空间 下去找了。

7、对于“限定名称类”,如果 当前命名看空间 有,则调用当前命名空间下的该 限定名称类,没有,则调用__autoload函数,还没有的话,就直接报错!即不会继续到 全局命名空间 下去找了。

8、上面说的常量指的是通过关键字const定义的常量,而函数define()定义的常量是不受命名空间影响的,即在任何地方都可用,具有全局性!另外 global 变量也不受命名空间影响。

以上是关于面相对象之命名空间注意事项的主要内容,如果未能解决你的问题,请参考以下文章

python面向对象之命名空间及组合

Spring的依赖注入之p命名空间和c命名空间

Spring的依赖注入之p命名空间和c命名空间

JavaScript之命名空间模式

Kubenetes之namespace(命名空间介绍)

C++入门篇之关键字,命名空间,输入输出和函数重载