使用 composer 加载目录下所有 php 文件需配置 autoload。1. 用 "files" 指定单个函数文件,如 functions/helper.php;2. 创建 bootstrap.php 动态加载整个目录 PHP 文件,再通过 "files" 引入该引导文件实现自动扫描;3. 类文件推荐使用 PSR-4 或 classmap 方式自动加载,运行
composer dump-autoload生效。

使用 Composer 加载一个文件夹下的所有 PHP 文件,可以通过配置 autoload 实现自动加载。Composer 并不会默认加载某个目录下的所有 PHP 文件,但你可以通过 files 类型的自动加载机制,手动指定需要包含的文件。
1. 使用 "files" 自动加载指定目录下的 PHP 文件
如果你想让 Composer 加载某个目录下的所有 PHP 文件(例如工具函数、全局常量等),可以在 composer.json 中使用 "autoload" 下的 "files" 配置项。
注意: "files" 用于加载独立的函数文件或执行代码的脚本,不适用于类文件(类推荐使用 PSR-4 或 classmap)。
示例:假设你有一个 functions/ 目录,里面包含多个 php 函数文件:
/functions helper.php utils.php constants.php
在 composer.json 中添加如下配置:
立即学习“PHP免费学习笔记(深入)”;
{ "autoload": { "files": [ "functions/helper.php", "functions/utils.php", "functions/constants.php" ] } }
然后运行命令生成自动加载映射:
composer dump-autoload
之后只要引入 vendor/autoload.php,这些文件就会被自动加载。
2. 批量加载整个目录的所有 PHP 文件(进阶方法)
Composer 原生不支持通配符如 functions/*.php,但你可以通过一个小技巧实现“自动扫描目录”:
创建一个入口文件(如 functions/bootstrap.php),在这个文件中动态包含目录下所有 PHP 文件:
// functions/bootstrap.php $dir = __DIR__; foreach (glob("$dir/*.php") as $file) { require_once $file; }
然后在 composer.json 中只加载这一个文件:
{ "autoload": { "files": ["functions/bootstrap.php"] } }
这样每次新增 PHP 文件时,只要放在 functions/ 目录下,就会被自动加载,无需修改 composer.json。
3. 类文件建议使用 PSR-4 或 classmap
如果你加载的是类文件,而不是函数或脚本,应该使用更标准的方式:
- PSR-4:适合命名空间组织良好的类
- classmap:适合传统结构或非命名空间类
例如使用 classmap 加载一个类目录:
{ "autoload": { "classmap": ["legacy-classes/"] } }
运行 后,Composer 会扫描该目录下所有类并生成映射。composer dump-autoload
基本上就这些。根据你的需求选择合适的方式:函数用 files,类用 PSR-4 或 classmap,配合一个小脚本就能轻松实现“加载整个目录”的效果。


