确定作曲家的迁移类中的 TYPO3 版本



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 版本的具体实现。

并且不要将类别名映射用于此类魔法。

相关内容

  • 没有找到相关文章

最新更新