PHP引入命名空间后为什么还要导入该文件才能使用里面的类?

发布于 2022-09-11 21:48:34 字数 90 浏览 10 评论 0

比如我要使用一个类的某个方法

abc::function();
那use a;的作用是什么 导入命名空间有什么用?自动加载机制 不是可以实现吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

—━☆沉默づ 2022-09-18 21:48:34

你应该是对自动导入和命名空间有误会。

自动加载(__autoload , 现在是 spl_autoload_register

PHP根据你的需求配合自动加载机制,加载你所使用的PHP文件。

比方说你把

  1. 书本 (放到主仓[namespace Main])
  2. 作业本 (放到辅仓[namespace Sub])
  3. 笔 (放到其他仓[namespace Other])
  4. ... etc.

这些物品都按照你书包的结构 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。这个原理应用到程序设计领域就是命名空间的概念。

引用官方解释,这里说的太复杂了。我结合我上面的例子给你简单的说一下:命名空间其实就是一个对 书[类]笔[对象] 进行根据你的需求进行归类,分别存放好,目的是为了解决你的书本和笔直接的冲突,也为了你拿书,笔方便。

希望对你有用。以上是个人理解,如有不对欢迎指出。

〆凄凉。 2022-09-18 21:48:34

use的是具体类哦,并不是命名空间,

use aabc;

abc::test();

菩提树下叶撕阳。 2022-09-18 21:48:34

use和自动加载没关系,use的作用是声明要用的类在哪个命名空间下面,这块并不是使用use实现了自动加载

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文