TYPO3-Обновление с 4.5 до 6.2: пространства имен

Я обновляю старый TYPO3 до последней версии 6.2.12. При этом я заменяю устаревшие классы соответствующими пространствами имен. Например. с t3lib_div по \TYPO3\CMS\Core\Utility\GeneralUtility или с t3lib_extmgm по \TYPO3\CMS\Core\Utility\ExtensionManagementUtility.

Но я не могу найти правильный класс с пространством имен для t3lib_svbase. Какие-либо предложения?

.

И я совершенно не знаю, что мне нужно делать с новым xclassed include.

//old XCLASS
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/foo_myfancyextension/sv1/class.tx_foomyfancyextension_sv1.php'])   {
    include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/foo_myfancyextension/sv1/class.tx_foomyfancyextension_sv1.php']);
}

Это должно выглядеть примерно так:

//new XCLASS
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects']['TYPO3\\CMS\\Frontend\\ContentObject\\FluidTemplateContentObject'] = array(
    'className' => 'Enet\\FxLibrary\\Xclass\\FluidTemplateContentObject',
);

Но где путь к моему расширению и самому классу?


person Seika85    schedule 05.06.2015    source источник
comment
t3lib_svbase стал \TYPO3\CMS\Core\Service\AbstractService. Сопоставление имен классов для расширения обычно находится Migrations/Code/ClassAliasMap.php в этой папке расширений. Упомянутые вами классы относятся к расширению core, поэтому сопоставление находится в файле typo3/sysext/core/Migrations/Code/ClassAliasMap.php.   -  person Jost    schedule 06.06.2015


Ответы (2)


Чтобы использовать новую функцию XLASS, вам необходимо обеспечить правильную автозагрузку, либо придерживаясь соглашения, либо создав файл ext_autoload.php.

http://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Autoloading/Index.html http://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Xclasses/Index.html

person pgampe    schedule 08.06.2015
comment
Спасибо. Я обнаружил это сам два дня назад. Но поскольку это правильно и в конечном итоге поможет другим, я отмечаю это как правильный ответ. Для меня уместно упомянуть, что @ViktorLivakivskyi сказал о том, что вам больше не нужно использовать прямой xclassing. - person Seika85; 10.06.2015

Как можно найти в typo3\sysext\core\Migrations\Code\LegacyClassesForIde.php, t3lib_svbase стало \TYPO3\CMS\Core\Service\AbstractService. Вы не можете напрямую создать экземпляр этого класса, так как он абстрактный, но вы можете работать с любым из его дочерних элементов.

Что касается этого блока:

//old XCLASS
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/foo_myfancyextension/sv1/class.tx_foomyfancyextension_sv1.php'])   {
    include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/foo_myfancyextension/sv1/class.tx_foomyfancyextension_sv1.php']);
}

Я предполагаю, что это та часть, которая находится внизу ваших файлов. Вы можете безопасно удалить его, поскольку, как предложил @pgampe, существует новый способ XCLASSing, который больше не требует этих строк.

person Viktor Livakivskyi    schedule 09.06.2015
comment
Спасибо. Я нашел решение самостоятельно два дня назад. Мне нужно было создать файл ext_autoload.php. Вы написали, что есть новый способ, фактически не говоря и не связывая его. Не хорошо. - person Seika85; 10.06.2015
comment
Ну, ссылки уже были в существующем ответе, о котором я упоминал. Так что не было смысла их копипастить. В любом случае, хорошо, что проблема решена. - person Viktor Livakivskyi; 10.06.2015