引入命名空间后 为什么不用指定文件路径?
引入命名空间后 为什么不用指定文件路径?
因为有一个函数,用来根据你的命名空间去自动加载文件。
所以看起来是不用指定文件路径,其实是有一个自动加载机制帮你require了。
补充一下:
LZ可以去官方文档看看:http://php.net/manual/zh/function.autoload.php
php的自动装载函数注册,这是个简单的示例
<?php
namespace Framework;
class Autoload
{
public function __construct()
{
# code...
}
public static function init()
{
spl_autoload_register('Framework\Autoload::autoload');
}
public static function autoload($class_name='')
{
require_once($class_name.'.class.php');
}
}
亲,你的命题本身是错误的,所以没必要解释为什么了。
发卡宝是一个专业的软件卡密等虚拟商品在线交易平台,拥有多种兑换方式,费率低,结算快,正规企业平台一直稳定运营,24小时不间断提供自动发卡服务。【模板说明】试用版自带一套模板(响应式)【环境支持】PHP环境 / 200M或以上空间大小 / 开启父路径 / 设置index.php为默认首页 / 目录写入权限需要开启【数据库】MySQL【安装步骤】将文件上传至空间目录,运行“http://域名/inst
1
命名空间可以简单地理解为长类名,比如项目中可能有 \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...
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号