🏗️ AddAutoload
向 composer.json 添加自动加载配置,支持 psr-4、psr-0、classmap、files 四种类型。
何时使用
需要为项目注册命名空间到目录的映射、声明 classmap 或 files 时使用。isDev 控制写入 autoload(生产)还是 autoload-dev(仅开发环境,如测试套件的命名空间)。
签名
go
func (c *Composer) AddAutoload(type_ string, namespace string, paths interface{}, isDev bool) error参数
| 参数 | 类型 | 说明 |
|---|---|---|
type_ | string | 自动加载类型:psr-4、psr-0、classmap、files |
namespace | string | 命名空间(如 App\);classmap/files 类型时可作为键占位 |
paths | interface{} | 路径,可以是 string 或 []string |
isDev | bool | true 写入 autoload-dev,false 写入 autoload |
返回值
error:读取或写入失败,或现有 autoload 配置类型不匹配(无法断言为map[string]interface{})时返回invalid autoload configuration错误。
示例
go
package main
import (
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
comp, err := composer.New(composer.DefaultOptions())
if err != nil {
log.Fatal(err)
}
// 生产环境 PSR-4 自动加载
if err := comp.AddAutoload("psr-4", "App\\", "src/", false); err != nil {
log.Fatal(err)
}
// 开发环境多目录 PSR-4 自动加载
if err := comp.AddAutoload(
"psr-4",
"Tests\\",
[]string{"tests/", "test-framework/"},
true,
); err != nil {
log.Fatal(err)
}
}进阶
- 🔄 内部流程:选择
autoload/autoload-dev→ 确保该类型的子映射存在 → 写入namespace => paths→WriteComposerJSON。 - ⚠️ 若已有配置在对应类型下不是
map[string]interface{},会返回错误,避免破坏结构。 - 🚀 修改 autoload 后需执行
DumpAutoload重新生成优化器映射才会生效。 - 📦 查询命名空间映射可使用
GetNamespaceMap。