pibase 扩展在 TYPO3 8 中仍然有效吗?

Are pibase extensions still working in TYPO3 8?

我必须将 TYPO3 6.2 网站迁移到 8.7。一些网站使用自定义 pibase 扩展,我需要用 Extbase 重新开发它们吗?

您不需要重新开发这些扩展,但您可能需要更改对核心功能的调用。
在 6.2 中,您仍然可以使用旧的 class 名称,例如 t3lib.
这些 class 名称仅适用于兼容层(还有很多延迟)。

将来您需要使用命名空间(以及正确的新 classes)。您还应该为自己的 classes 使用命名空间。

根据您使用的函数,您可能需要用较新的函数替换一些调用,因为同时某些函数已被弃用。

您不需要重新开发这些扩展。

只需要更改一些 TYPO3 核心功能,例如 t3lib_div t3lib_BEfunc t3lib_parsehtml t3lib_extMgm 等等..

请在此处查看完整示例:See more details

之前的答案都是正确的,但是来自TYPO3核心团队成员的一些话:没有计划在核心中放弃对"pibase"的支持。使用那个 API 绝对没问题,即使它对开发人员没有太大帮助。


不过,我建议至少使用流畅的独立版,以便能够在没有所有这些 ### 东西的情况下创建漂亮的模板。

资源

我发现以下资源有助于移植:

更新到 6.2+

更新到 7+

更新到 8+

更新到 9+

  • 官方"Changelog" for 9
  • Migrating from TYPO3_DB in "TYPO3 Explained" for converting old database functions to QueryBuilder. You can convert to QueryBuilder or Extbase Query。 ($GLOBALS['TYPO3_DB'] 从 9 开始不再可用,除非您使用扩展 typo3db_legacy!)

还有:

一般

您需要进行的更改可能微不足道。在其他情况下,意义重大。

考虑到所有因素,我 通常 建议使用 Extbase 或 Doctrine DBAL (QueryBuilder) 和 Fluid、Namespaces、TYPO3 9 API(甚至可能是 TYPO3 10)重写如果可能的话)。您的扩展将(可能)在长期 运行.

中更易于维护

提示

  • 如果迁移到 TYPO3 9 或更高版本,请使用 extension scanner 检测最有可能导致问题的代码。它对于清理遗留代码非常有帮助。 (您也可以在 TYPO3 9 安装中扫描未安装的扩展)。
  • 或者,使用 rector is often used to automatically make changes to PHP in extensions. Rules are available for TYPO3 via sabbelasichon/typo3-rector

变化

您可能需要更改以下一项或多项(这不是完整列表!):

旧的换新的类

在大多数情况下,我需要替换以下子集:

  • Tx_Extbase_Utility_Extension : \TYPO3\CMS\Extbase\Utility\ExtensionUtility
  • t3lib_extMgm : \TYPO3\CMS\Core\Utility\ExtensionManagementUtility
  • t3lib_div : \TYPO3\CMS\Core\Utility\GeneralUtility
  • tslib_cObj : \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
  • t3lib_utility_VersionNumber : \TYPO3\CMS\Core\Utility\VersionNumberUtility
  • t3lib_BEfunc : \TYPO3\CMS\Backend\Utility\BackendUtility
  • t3lib_TCEmain : \TYPO3\CMS\Core\DataHandling\DataHandler
  • t3lib_parsehtml_proc : \TYPO3\CMS\Core\Html\RteHtmlParser

有关完整列表,请参阅 ClassAliasMap.php

TCA

请参阅“Andreas Fernandez: Cleaning the hood”以获取有关使用真实示例清理 TCA 的非常好的描述。

PageRenderer

  • 将 $this->getPageRenderer 替换为 \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Page\PageRenderer::class);

page.includeJSlibs

"page.includeJSlibs 已标记为弃用,并将在 TYPO3 CMS 8 中删除。请改用 page.includeJSLibs(带大写 L)"