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' => \TYPO3\CMS\About\Controller\ModulesController::class,
但是在基于composer的某些环境中,这会引发异常 .
[ErrorException]
Use of undefined constant TYPO3_version - assumed 'TYPO3_version'
如何使常量TYPO3_version也能为作曲家自动加载器工作?
2 回答
在所有情况下,此文件必须被视为简单的哈希映射 . 不能将任何其他PHP代码添加到此文件中 .
如果您认为在此文件中需要PHP代码,则不能使用类别名映射概念来涵盖此案例 .
我会sugesst实现一个“unversal适配器”类,它适用于所有TYPO3版本,并从那里检测当前的TYPO3版本 . 并加载当前TYPO3版本的具体实现 .
并且不要使用类别名映射来实现这种魔法 .