如何解决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/");
在那之后,问题中发布的警告只是掩盖了根植于处理移交的“模板目录”的进一步不一致。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。