php 的 命名空间的问题 !!!请教各位大牛了,一直没搞懂这个 。。。。

https://img.mukewang.com/5c8f68be0001f4fd08000600.jpg

图中的区域就代表 Money 命名空间吗 ?

GCT1015
浏览 505回答 5
5回答

慕斯709654

不是,你截图的区域还是在 Goods下直到下一个namespace关键字开始,才属于不在Goods空间的地盘use Money 表示new的时候,因为是在Goods空间下new的,所以默认在当前命名空间下new的 ,引入Goods空间下面的 Money 这个类 另外在正式开发下,一个php文件 只对应一个namespace,一个类 占一个php文件

白衣染霜花

namespace Goods;这句就是命名空间。说白了,就是把类分组。有点抽象。差不多得弄清楚以下情况。两个类,A类调用B类《1》A和B都是用了同一个命名空间 《2》AB都用了不同的命名空间 《3》A用了命名空间,B没用命名空间

蛊毒传说

namespace Goods;//命名空间命名空间是将代码划分出不同的空间(区域),每个空间的常量、函数、类的名字互不影响,这个有点类似我们常常提到的‘封装'的概念.use xxx;//加载某个命名空间namespace Goods;到namespace Car;之间都属于Goods的空间范围

一只斗牛犬

示例代码并不规范,所以不太好理解。先解释下问题。 图中区域的命名间是 Goods; namespace Goods; class goods_category{} use Money; // 没有重新声明新的命名空间,这里可以直接调用相同空间下的类 new goods_category(); // use引入了一个命名空间(并不是替代),所以可以使用Money空间下的内容,假设Money下有一个Test类 new Test();//没有毛病 // 不过如果Money也有一个goods_category类,那这里要设该类就只能这样了 new Money\goods_category(); namespace Car; // 已经重新声明命名空间为Car,所以这里就不能直接调用Goods空间下的类 // new goods_category(); Fatal error: Class 'Car\goods_category' not found new \Goods\goods_category(); // 不使用use的情况下只能完整加上命名空间 根据PSR规范,一个源文件只能有一个类名,并且完整的类名必须有一个最终的类名,所以也只能有一个命名空间(PSR把命名空间分为顶级命名空间和子命名空间,这里说的一个是指顶级命名空间和子命名空间合起来之后的结果)。

繁华开满天机

@乌啦啦 测试一下

蓝山帝景

相同的命名空间的类在调用时不必use,命名空间只是类的一个归类。不是留几个空行就是空间。
打开App,查看更多内容
随时随地看视频慕课网APP