Composer自动加载TYPO3扩展类,无需任何自动加载配置

时间:2016-11-11 15:41:44

标签: composer-php typo3 typo3-6.2.x

为什么以下的根composer.json会导致vendor/composer/autoload_classmap.php包含Smarty类的所有类映射 - 尽管composer.json的{​​{1}}未来任何typo3-ter/smarty配置?

autoload

1 个答案:

答案 0 :(得分:6)

一些背景信息:

https://composer.typo3.org是一个作曲家存储库,可以通过编辑器安装传统 TYPO3扩展存储库(TER)扩展。由于TER扩展程序没有供应商名称,因此所有共享相同的供应商,即“typo3-ter”。

这个(传统)作曲家存储库是使用TER的元信息(与其他TER扩展和TYPO3版本,作者,描述......的依赖关系)构建的。

要使此存储库对最终用户更有用,特别是因为TYPO3> 7.6在通过composer安装时完全依赖于composer自动加载器,complete extension directory将添加到composer类映射中。没有它,扩展类根本不可加载,无需任何额外配置。

因为这可能会带来麻烦,所以我教过TER来部分捕获composer.json中的信息,以防该文件存在。这意味着如果一个composer.json存在 it contains an autoload section,则此部分用于在composer.typo3.org上为此扩展生成自动加载信息

关于smarty扩展:

令人惊讶的是,这个扩展已经有了一个composer.json文件。但它被打破了。首要的是:它错过了自动加载信息,尽管它显然有类可用。由于缺少自动加载信息,composer.typo3.org包生成器将完整目录添加为类映射。

如果这会导致麻烦(你从来没有提到过,但我假设是这样),你应该直接将repo作为“vcs”类型添加到你的composer.json中,并且需要“rtp / smarty”而不是“typo3” - 三联/ smarty的”。

或者您要求作者修复composer.json并将新版本上传到TER,或者甚至更好地直接在packagist.org上注册该包