TYPO3本地扩展类自动加载是否需同时配置项目与扩展的autoload
结论
不需要保留根项目composer.json中额外添加的autoload配置,仅保留site_package扩展内部的autoload配置即可。
原因说明
- Composer 本身自带依赖自动加载规则合并能力:只要你是通过
composer require正确安装的依赖(包括你配置的path类型本地扩展),Composer 会自动读取每个依赖包自身composer.json里的autoload规则,合并到全局自动加载配置中,不需要在根项目重复定义。 - 你当前遇到的类无法自动加载的问题,和根项目有没有加
autoload无关,通常是以下常见原因导致:- 修改扩展内部的
composer.json后,没有执行composer dump-autoload刷新自动加载缓存 - 你配置的
path类型仓库路径和扩展实际存放路径不匹配:你根配置里repositories指向的是./packages/*,但你额外加的自动加载路径是public/typo3conf/ext/site_package/,请确认扩展实际是存放在项目根目录的packages目录下,路径匹配的情况下Composer才会正确读取扩展的配置。
- 修改扩展内部的
- 保留根项目的重复自动加载配置反而会带来隐患:同一个命名空间
Vendor\SitePackage\对应了两个路径映射,后续如果扩展存放位置调整,需要同步修改两处配置,还可能出现类加载优先级冲突、重复加载的问题,完全没有必要。
内容的提问来源于stack exchange,提问作者chris
相关产品推荐
相关产品推荐

