определить версию TYPO3 в классах миграции для композитора

Версия TYPO3 должна быть определена в файле ClassAliasMapResult.php расширения, потому что это расширение должно поддерживать более одной версии TYPO3. В TYPO3 для этого есть константа TYPO3_version. Это сопоставление псевдонимов необходимо для запуска расширений TYPO3 в нескольких версиях TYPO3 с одним и тем же кодом PHP. Файл сопоставления псевдонимов классов зависит от версии TYPO3, потому что каждый из них имеет некоторые различия в именах и номерах файлов классов.

У меня есть этот файл /Migrations/Code/ClassAliasMapResult.php в строке 940 расширения div2007:

if (version_compare(TYPO3_version, '8.0.0', '>=')) {
 $variantClassArray = array(
    'Tx_Aboutmodules_Controller_ModulesController' => \TYPO3\CMS\About\Controller\ModulesController::class,

Однако в некоторых средах на основе композитора возникает исключение.

[ErrorException]
Use of undefined constant TYPO3_version - assumed 'TYPO3_version'

Как можно заставить константу TYPO3_version работать и с автозагрузчиком композитора?


person Franz Holzinger    schedule 30.04.2018    source источник
comment
Вы уверены, что это связано с композитором? Похоже, вы обращаетесь к этой константе до инициализации TYPO3.   -  person rob006    schedule 01.05.2018


Ответы (2)


Этот файл во всех случаях следует рассматривать как простую хеш-карту. Никакой другой код PHP не должен быть добавлен в этот файл.

Если у вас есть случай, когда вы думаете, что вам нужен PHP-код в этом файле, тогда этот случай не может быть охвачен концепцией карты псевдонима класса.

person helhum    schedule 02.05.2018

Я бы предложил реализовать класс «универсального адаптера», который работает на всех версиях TYPO3 и оттуда обнаруживает текущую версию TYPO3. и загрузите конкретную реализацию для текущей версии TYPO3.

и не использовать карту псевдонима класса для такой магии.

person Wolffc    schedule 02.05.2018