PHP引入命名空间后为什么还要导入该文件才能使用里面的类?
比如我要使用一个类的某个方法
abc::function();
那use a;的作用是什么 导入命名空间有什么用?自动加载机制 不是可以实现吗
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
比如我要使用一个类的某个方法
abc::function();
那use a;的作用是什么 导入命名空间有什么用?自动加载机制 不是可以实现吗
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
你应该是对自动导入和命名空间有误会。
自动加载(
__autoload
, 现在是spl_autoload_register
)PHP根据你的需求配合自动加载机制,加载你所使用的PHP文件。
namespace Main
])namespace Sub
])namespace Other
])这些物品都按照你书包的结构
namespace
,以及你存放规则,全部都归类好了放到书包里面了。命名空间 (
namespace
)(PHP 5 >= 5.3.0, PHP 7)
什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。
use的是具体类哦,并不是命名空间,
use aabc;
abc::test();
use和自动加载没关系,use的作用是声明要用的类在哪个命名空间下面,这块并不是使用use实现了自动加载