PEAR HTML_Template_IT/HTML_Template_ITX 与 PHP 7.4 导致空页面

问题描述

我的一个项目利用 PEAR 包 HTML_Template_IT 及其扩展 HTML_Template_ITX。该代码一直工作到从 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

?>

这会导致错误调用未定义的方法 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/");

在那之后,问题中发布的警告只是掩盖了根植于处理移交的“模板目录”的进一步不一致。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...