当前位置:Gxlcms > PHP教程 > 引入命名空间后为什么不用指定文件路径?

引入命名空间后为什么不用指定文件路径?

时间:2021-07-01 10:21:17 帮助过:4人阅读

引入命名空间后 为什么不用指定文件路径?

回复内容:

引入命名空间后 为什么不用指定文件路径?

因为有一个函数,用来根据你的命名空间去自动加载文件。

所以看起来是不用指定文件路径,其实是有一个自动加载机制帮你require了。

补充一下:
LZ可以去官方文档看看:http://php.com/manual/zh/function.autoload.php

php的自动装载函数注册,这是个简单的示例

亲,你的命题本身是错误的,所以没必要解释为什么了。

命名空间可以简单地理解为长类名,比如项目中可能有 \Core\Object 和 \Project\Object 两个对象,(分别隶属于Core和Project命名空间。)而在调用的时候通过 use Core\Object 或者 use Project\Object 说明后续代码中的 $obj = new Object()到底是Core\Object的实例还是来自Project\Object。这和指定文件路径完全无关。

不用指定文件路径来自于PHP的自动加载机制(包含默认的机制以及项目中的自定义扩展部分),而不是因为使用了命名空间。很简单的一个反例,ZendFramework1版本中并没有使用命名空间,但是同样实现了自动加载。

你可以自己尝试创建一个全新的项目,只有两个文件
index.php
$object = new \Object();
创建Project目录及文件Object.php
namespace \Project
class Object {}
运行index.php看看有什么结果。

可以去百度研究研究spl_autoload_register

除非自动加载机制在运作,否则,一定会报错。关于自动加载机制的写法你看一下
http://www.cnblogs.com/quinnxu/p/4824805...

人气教程排行