debugging - TYPO3 旧扩展更新使用“退出”:好还是不好?
问题描述
几年前,我开发了一个扩展作为后端模块。它可以在 TYPO3 7 LTS 上运行。最近我更新了它,想让它在 TYPO3 8 LTS 上运行。
它不是基于Extbase,主类路径是mod1/index.php。
在这个 index.php 中有主类 tx_xxxxx_module1。在类 tx_xxxxxx_module1 中有多个函数,可以生成想要的内容。在 index.php 的末尾调用了一个函数来打印内容(到 iframe 中): $SOBE->printContent();
//index.php
<?php
global $MCONF;
require_once \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('xxxxx').'mod1/conf.php';
class tx_xxxxx_module1 extends \TYPO3\CMS\Backend\Module\BaseScriptClass {
......
function main() {
......
}
......
function printContent() {
......
}
}
......
$SOBE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('tx_xxxxx_module1');
$SOBE->main();
$SOBE->printContent();
?>
这里 $SOBE 是类 tx_xxxxxx_module1 的一个实例(单例);在函数 printContent() 中,除了一个回显命令之外什么都没有:
function printContent()
{
echo $this->content;
}
这适用于 TYPO3 7。但在 TYPO3 8 中,我在 iframe 中什么也没看到。所以我在函数 printContent() 中添加了退出命令。问题解决了!内容出现在 iframe 中!
function printContent()
{
echo $this->content;
exit;
}
我的问题:这种解决方法(使用exit)好还是不好?还有其他更好或推荐的方法吗?
解决方案
这听起来不错,但如果你需要的话,我会考虑整体重构代码,也可以切换到流体进行模板等等。但是,如果您不需要它,则无需切换到 extbase。
推荐阅读
- python - CUML:无法在多 GPU Dask 集群上训练随机森林模型
- python - 更改 kivy.label 的 selected 属性
- maven - 如何将项目的发布版本存储在特定属性中?
- java - 为时间戳添加 5 秒的 JUnit 测试:没有为参数 [object] 注册 ParameterResolver
- gradle - Gradle 任务将远程项目目录下载为 zip 文件并解压缩
- cron - 如何在 Prestashop 中进行 cron 工作?
- firebase - 获取 UID 和文档数据 Firebase
- php - 在haveRaw中转义> char到>
- python - Tkinter 动态条目显示
- php - 如何修复我的 cpanel 别名和域 IP 地址在 cpanel 中不起作用