联系QQ 284710375
首页 > 技术分享 > 原生PHP
收藏

PHP命名空间namespace2022-08-02 09:41:51

大潇博客 原创文章,转载请标明出处

在PHP中,同一个应用请求里如果有两个相同的方法(类名),他们的名字一样(例如都是getName),由于PHP本身的语法规则,系统会报错“Fatal error”这种致命错误


解决方法:

1、把它们的名字改为不一样的,如:agetName(),bgetName()

例如:Yii框架为了避免名字重复引起问题,同步的类前面都有“C”字样

2、通过命名空间决定


简单应用:

1、命名空间是虚拟空间,不是真实存在的目录

2、命名空间的分隔符都是反斜线“\”

3、非限定名称:getName(),获得与其最近的命名空间的 getName()

4、限定名称:beijing\getName(),这是相对方式,通过最近的命名空间定位 beijing\getName()

5、完全限定名称:\beijing\getName(),直接在指定的命名空间,获得具体元素

6、命名空间针对:函数、类名、常量 三者起作用,在命名空间中把这三种称为元素


结合下面所举的例子,可以更方便的理解

//声明命名空间

namespace first;

function getName(){

return 'hello';

}

//可以使用到前边声明最近的命名空间的getName()

//echo getName();  //hello

namespace second;

function getName(){

return 'world';

}

//使用最近的命名空间的getName()

//echo getName();  //world

namespace third;

function getName(){

return 'china';

}

echo getName();  //[非限定名称]

//根据命名空间决定使用哪个getName()

//PHP使用相对定位,根据当前最近的命名空间(文件)定位,调用其它命名空间时,使用绝对定位,最前边加反斜线“\”

echo getName();  //[非限定名称]

echo first\getName();  //[限定名称]

echo \second\getName();  //[完全限定名称]


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311