Skip to content

🏗️ AddAutoload

composer.json 添加自动加载配置,支持 psr-4psr-0classmapfiles 四种类型。

何时使用

需要为项目注册命名空间到目录的映射、声明 classmap 或 files 时使用。isDev 控制写入 autoload(生产)还是 autoload-dev(仅开发环境,如测试套件的命名空间)。

签名

go
func (c *Composer) AddAutoload(type_ string, namespace string, paths interface{}, isDev bool) error

参数

参数类型说明
type_string自动加载类型:psr-4psr-0classmapfiles
namespacestring命名空间(如 App\);classmap/files 类型时可作为键占位
pathsinterface{}路径,可以是 string[]string
isDevbooltrue 写入 autoload-devfalse 写入 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 => pathsWriteComposerJSON
  • ⚠️ 若已有配置在对应类型下不是 map[string]interface{},会返回错误,避免破坏结构。
  • 🚀 修改 autoload 后需执行 DumpAutoload 重新生成优化器映射才会生效。
  • 📦 查询命名空间映射可使用 GetNamespaceMap

基于 MIT 许可证发布