严格标准:不应静态调用非静态方法spController :: getLang()

时间:2013-07-20 13:15:52

标签: php

我有这个功能:

<?PHP
function T($w) {
    $method = $GLOBALS['G_SP']["lang"][spController::getLang()]; // LINE 2
    if(!isset($method) || 'default' == $method){
        return $w;
    }elseif( function_exists($method) ){
        return ( $tmp = call_user_func($method, $w) ) ? $tmp : $w;
    }elseif( is_array($method) ){
        return ( $tmp = spClass($method[0])->{$method[1]}($w) ) ? $tmp : $w;
    }elseif( file_exists($method) ){
        $dict = require($method);
        return isset($dict[$w]) ? $dict[$w] : $w;
    }else{
        return $w;
    }
}
?>

不,我在第2行看到了这个错误:

  

严格标准:非静态方法spController :: getLang()不应该   在第2行的C:\ xampp \ htdocs \ inc \ spFunctions.php中静态调用

如何解决此错误?

注意:我需要在不更改php.ini的情况下修复此问题(禁用error_reporting = E_ALL | E_STRICT或display_errors = On to Off)

2 个答案:

答案 0 :(得分:2)

如果spController::getLang()函数没有引用实例属性(使用$this),那么您只需要将static添加到函数声明中。即

public static function getLang();

或者如果您使用$this的引用,则需要创建pController的实例,然后将getLang()方法作为实例方法调用。

$controller = new spController();
$lang = $controller->getLang();

答案 1 :(得分:0)

$sp = new spController();
$sp->getLang();

或者您的应用程序中可能存在spController的实例