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)
任何帮助表示赞赏。非常感谢。
找到了一个解决方案,因为我在升级到 Smarty 3.1.36 时遇到了同样的问题:该方法已被重命名。
代替
$yourSmartyObject->get_template_vars()
Run Code Online (Sandbox Code Playgroud)
和
$yourSmartyObject->getTemplateVars()
Run Code Online (Sandbox Code Playgroud)
最后我发现,除了之前的操作之外$myTemplate,我还做了以下操作:
$myTemplate->get_template_vars('fooVar')
Run Code Online (Sandbox Code Playgroud)
现在,我将尝试找出get_template_vars()导致此错误的原因。