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+
- ClassAliasMap.php(旧到新的映射类)
更新到 7+
- 维基:TYPO3 7 migration guide
- 官方"Changelog" for 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
- 使用 $GLOBALS['TCA'] 而不是 $TCA
- 将覆盖 TCA 移动到 Configuration/TCA/Overrides,参见 Breaking Change #78384,将您自己的模型的 TCA 移动到 Configuration/TCA。 ext_tables.php 最终将被弃用。
- Third Parameter in addTCAColums is deprecated
请参阅“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)"
我必须将 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+
- ClassAliasMap.php(旧到新的映射类)
更新到 7+
- 维基:TYPO3 7 migration guide
- 官方"Changelog" for 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
- 使用 $GLOBALS['TCA'] 而不是 $TCA
- 将覆盖 TCA 移动到 Configuration/TCA/Overrides,参见 Breaking Change #78384,将您自己的模型的 TCA 移动到 Configuration/TCA。 ext_tables.php 最终将被弃用。
- Third Parameter in addTCAColums is deprecated
请参阅“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)"