gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:09:51 25 4
gpt4 key购买 nike

为什么下面的根 composer.json 会导致 vendor/composer/autoload_classmap.php 包含 Smarty 类的所有类映射——尽管 composer typo3-ter/smarty 的 .json 没有任何 autoload 配置?

{
"repositories": [
{
"type": "composer",
"url": "https://composer.typo3.org"
}
],
"require": {
"typo3/cms": "^6.2",
"typo3-ter/smarty": "2.1.2"
}
}

最佳答案

一些背景信息:

https://composer.typo3.org是一个 composer 存储库,它使 legacy TYPO3 Extension Repository (TER) 扩展可以通过 composer 安装。因为 TER 扩展没有供应商名称,所以它们所有共享同一个供应商,即“typo3-ter”。

此(遗留) Composer 存储库是使用 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直接在 composer.json 中输入“vcs”并要求使用“rtp/smarty”而不是“typo3-ter/smarty”。

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

关于composer-php - Composer 自动加载 TYPO3 扩展类,无需任何自动加载配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com