Недавно я переместил одно старое приложение PHP, первоначально с 2004 года, на недавно установленный хост Linux. Первоначально он был написан на PHP4, но он работал без каких-либо изменений на PHP5.
. Теперь существует проблема с рендерингом Pearl HTML_Template_IT с PHP7 и Phar. Нерабочий код выглядит следующим образом
<?php
require_once("HTML/Template/IT.php");
class Layout_normal
{
function __construct($views)
{
$this->views = $views;
$Tt = new HTML_Template_IT("../tpl");
$Tt->loadTemplatefile("layoutNormal.tpl");
foreach($views as $view => $data)
{
if($view == "main") {
$Tt->setVariable("PAGE", $data);
}
elseif($view == "help")
{
$Tt->setCurrentBlock("help");
$Tt->setVariable("HELP", $data);
$Tt->parseCurrentBlock();
}
elseif($view == "pagename") $Tt->setVariable("PAGENAME", $data);
elseif($view == "active") $active = $data;
elseif($view == "module") $module = $data;
}
$Tt->setVariable("MENU", $this->getMenu($view));
$Tt->setVariable("TOPMENU", $this->getMenu($view));
$this->page = $Tt->get();
}
// some more methods here
}
?>
Из этого кода переменная {{PAGE}} была отображена, как и ожидалось, но {{MENU}} и {{TOPMENU}} не отображаются. Этот же код работает в старой PHP5 среде.