TYPO3版本必须在扩展名的文件ClassAliasMapResult.php中确定,因为此扩展必须支持多个版本的TYPO3。TYPO3对此具有恒定的TYPO3_version。 为了在具有相同 PHP 代码的多个版本的 TYPO3 下运行 TYPO3 扩展,需要此别名映射。类别名映射文件取决于 TYPO3 的版本,因为它们中的每一个在类文件的名称和编号上都有一些差异。
我在扩展div2007 第 940 行中有这个文件/Migrations/Code/ClassAliasMapResult.php:
if (version_compare(TYPO3_version, '8.0.0', '>=')) {
$variantClassArray = array(
'Tx_Aboutmodules_Controller_ModulesController' => TYPO3CMSAboutControllerModulesController::class,
但是,在某些基于作曲家的环境中,这引发了一个例外。
[ErrorException]
Use of undefined constant TYPO3_version - assumed 'TYPO3_version'
如何使常量TYPO3_version也为作曲家自动加载器工作?
在任何情况下,此文件都必须被视为简单的哈希映射。 不得将其他 PHP 代码添加到此文件中。
如果你有一个你认为你需要PHP代码的情况 在此文件中,类别名映射概念无法涵盖这种情况。
我会建议实现一个适用于所有 TYPO3
版本的"反转适配器"类,并从那里检测当前的 TYPO3 版本。 并加载当前 TYPO3 版本的具体实现。
并且不要将类别名映射用于此类魔法。