Composer 的自动加载机制
Composer 的自动加载机制
Composer
提供了四种自动加载方式,分别是 PSR-0
、PSR-4
、生成 classmap
以及之间包含 files
。
PSR-0 方式#
PSR-0
方式要求目录名和命名空间层层对应,这样导致目录结构会很深,现在已经被官方废弃了。 但是,因为现在的主流 PHP
框架都已经实现了 PSR-0
方式,所以 Composer
仍然向下兼容。按照 PSR-0
的规则,当加载 User\Info
这个类的时候,那么会去寻找 src/User/Info.php
,最后这个配置会以 Map
的形式,写入生成的 vendor/composer/autoload_namespaces.php
中。
"autoload": {
"psr-0": {
"User\\": "src/",
}
}
PSR-4 方式#
PSR-4
方式时 Composer
推荐使用的一种方式,同时也是 PSR-0
的替代方式。PSR-4
更容易使用及有更为简便的目录结构。当自动加载 User/Info
这个类的时候,那么会去寻找 src/User/Info
这个文件。PSR-4 的配置会被转换成 namespace
为 Key
,DIR PATH
为 Value
的 Map
的形式,并写入生成的 vendor/composer/autoload_namesapce.php
中。
"autoload": {
"psr-4": {
"User\\": "src/",
}
}
classmap 方式#
classmap
方式是通过配置指定的目录或文件,然后在 composer install
或 update
的时候。会扫描指定目录下的 .php
或 .inc
文件中的类到指定文件路径的映射,并写入生成的 vendor/composer/autoload_classmap.php
文件中。 假设:src
下有一个 BaseController
类,那么在 autoload_classmap.php
文件中,就会生成这样的配置:BaseController => $baseDir . '/src/BaseController.php'
。
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
files 方式#
files
方式是手动指定供直接加载的文件。例如:有一个全局的 helper
函数,可以放到一个 helper
文件中直接进行加载。会生成一个数组包含配置中指定的 files
,然后写入生成的 vendor/autoload_files.php
"autoload": {
"files": ["src/app/helper.php"]
}
最后#
在配置 composer.json
完成之后,就直接运行 composer install
。然后在项目的入口文件中,引入 require 'vendor/autoload.php'
就可以愉快的使用相关的类库了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战