严格标准:非静态方法STemplate :: assign()不应被静态调用

问题描述:

i将旧的xampp(1.7.3)本地主机服务器升级到1.8.0。现在,不工作smarty模板引擎(2.6.6)在我的所有页面,我看到Strict Standards错误。什么问题?如何解决这个问题?严格标准:非静态方法STemplate :: assign()不应被静态调用

NOTE : This Wroked Fine In Old Xampp(1.7.3).

部分的故障的:

Strict Standards: Non-static method STemplate::assign() should not be called statically in C:\xampp\htdocs\tube\include\config.php on line 88 

Strict Standards: Non-static method STemplate::create() should not be called statically in C:\xampp\htdocs\tube\libraries\mysmarty.class.php on line 42 

Strict Standards: Non-static method STemplate::setCompileDir() should not be called statically in C:\xampp\htdocs\tube\include\config.php on line 181 

Strict Standards: Non-static method STemplate::setTplDir() should not be called statically in C:\xampp\htdocs\tube\include\config.php on line 182 

我的配置行错误:

STemplate::assign($field, $config[$field]); // line 88 
STemplate::setCompileDir($config['basedir']."/temporary"); // line 181 
STemplate::setTplDir($config['basedir']."/themes"); // line 182 

my.Smarty.class.php(误差线2)

function assign($var, $value) { 
     global $Smarty; 
     if (!isset($Smarty)) { 
      STemplate::create(); // <---- line 42 
     } 
     $Smarty->assign($var, $value); 
    } 

感谢您的任何帮助:)

+0

功能分配不是一个静态方法,但你称它为一个静态方法。通常你用$ instance-> assign()调用一个方法。所以这是你的问题。所以你应该升级所有的软件,然后看看是否需要进一步修改你的代码。 – 2012-07-30 12:09:47

这是因为你使用现代版本的PHP与strict standards。您可以通过发表声明,以使代码工作:

public static function assign($var, $value) 

由其他错误,但是判断你会碰到很多问题。您可以尝试禁用严格的标准,但最好升级到Smarty的现代版本。

+0

你对!但我没有任何时间改变/升级Smarty到新版本!所以我改变功能为公共静态。函数'严格标准'错误固定,但我看到新的错误:'注意:未定义变量:以214行C:\ xampp \ htdocs \ tube \ members.php结尾。第214行是:'STemplate :: assign('beginning',$ beginning);' – BBKing 2012-07-30 12:25:25

+0

它可能是之前或之后的行,它可能需要'isset'检查或在使用前初始化。 – Martin 2012-07-30 12:28:25

+0

成员页面中的所有模板代码:'// TEMPLATES BEGIN' 'STemplate :: assign('beginning',$ beginning);第213行' 'STemplate :: assign('ending',$ ending);第214行' 'STemplate :: assign('pagelinks',$ pagelinks);第215行' 'STemplate :: assign('total',$ total); line 216' 'STemplate :: assign('listvideos',$ users); line 217' 'STemplate :: display('header.tpl'); line 218' 'STemplate :: display('members.tpl'); line 219' 'STemplate :: display('footer.tpl'); 220行# '// TEMPLATES END' – BBKing 2012-07-30 12:46:45