使用PHP 7.4的PEAR HTML_Template_IT/HTML_Template_TTX会导致空页面



我的一个项目使用了PEAR包HTML_Template_IT及其扩展HTML_Template_TTX。该代码一直有效,直到从PHP 5到PHP 7.4的转换姗姗来迟。现在,我们遇到了从扩展类引用HTML_Template_ITX((的问题。简而言之,实现如下所示:

<?php
//=== somesite.php ===//
[...]
$template = new siteMainTemplate("article.tpl");
$template->setCurrentBlock("ARTICLE");
$template->setVariable("ARTICLE_HEAD", "some headline");
$template->setVariable("ARTICLE_BODY", "some text");
[...]
$template->parseCurrentBlock();
$template->showSite();
[...]
?>

扩展PEAR包的类定义:

<?php
//=== classdefs.php ===//
require_once "../PEAR/ITX.php";
class siteMainTemplate extends HTML_Template_ITX {
function __construct($pageBody, $pageTitle) {
$this->template = $this->HTML_Template_ITX("../templates/");
[...]
}  // ... end of function
function showSite() {
$this->show();
}  // ... end of function
}  // ... end of class definition
?>

这导致错误"0";调用未定义的方法siteMainTemplate::HTML_Template_ITX(("。

抛出错误的线路是

$this->template = $this->HTML_Template_ITX("../templates/");

它一开始看起来很奇怪,但已经运行了很长时间。将其更改为类似的内容

$this->template = new HTML_Template_ITX("../templates/");

结果是一个空/空白的页面-好吧,打开错误后,确实发生了以下情况:

Warning: preg_match_all(): Empty regular expression in /.../PEAR/IT.php on line 1020
Warning: preg_match(): Empty regular expression in /.../PEAR/ITX.php on line 296
Notice: Undefined property: siteMainTemplate::$parseCurrentBlock in /.../classes/classdefs.php on line ...

这显然指向了一个错误的类定义。

有人能就我在这里做错了什么提出建议吗?

编辑:在第二个代码片段中键入更正的内容-第二个函数旨在将示例完成为";showSite((";,而不是作为第二个构造函数。

更多的测试表明,正确的行确实是:

$this->template = new HTML_Template_ITX("../templates/");

在那之后,问题中发布的警告只是掩盖了源于对";模板目录";移交。

最新更新