Smarty:未定义的扩展类“Smarty_Internal_Method_Get_Template_Vars”

Hoo*_*ark 5 php smarty smarty3

我正在尝试从旧的 PHP 5.4.45 + Smarty 2.6.28 迁移到新的 PHP 7.2.25 + Smarty 3.1.33。

我正在调整一些小代码片段,它在大多数网页中都可以工作,但突然在某些 PHP 页面中停止工作,返回以下错误消息:

Notice: Undefined property: Smarty_Internal_Undefined::$objMap in /home/www/libs/Smarty-3.1.33/libs/sysplugins/smarty_internal_extension_handler.php on line 132
Fatal error: Uncaught --> Smarty: undefined extension class 'Smarty_Internal_Method_Get_Template_Vars' <-- thrown in /home/www/libs/Smarty-3.1.33/libs/sysplugins/smarty_internal_undefined.php on line 62
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚哪个 PHP 代码导致了此错误消息,因为我在其中没有看到任何要分析的行位置。看起来这些页面的 PHP 代码与正常运行的页面非常相似。我在网上看到这个错误可能是由PHP中的“register_object”引起的。我刚刚检查了我的 PHP 文件,其中没有“register_object”。

在不工作的 PHP 页面(如工作页面)中,除了其余的 PHP 操作之外,我还执行以下操作:

$myTemplate = new Smarty();
$myTemplate->compile_dir = $mypath . "/templates_c";
$myTemplate->template_dir = $mypath . "/templates";
$myTemplate->assign("myvarible", $foo);
$myTemplate->display("mytemplate.html");
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。非常感谢。

Oli*_*ver 5

找到了一个解决方案,因为我在升级到 Smarty 3.1.36 时遇到了同样的问题:该方法已被重命名。

代替

$yourSmartyObject->get_template_vars()
Run Code Online (Sandbox Code Playgroud)

$yourSmartyObject->getTemplateVars()
Run Code Online (Sandbox Code Playgroud)


Hoo*_*ark 0

最后我发现,除了之前的操作之外$myTemplate,我还做了以下操作:

$myTemplate->get_template_vars('fooVar')
Run Code Online (Sandbox Code Playgroud)

现在,我将尝试找出get_template_vars()导致此错误的原因。