0

我有这个功能:

<?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)

4

2 回答 2

2

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

public static function getLang();

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

$controller = new spController();
$lang = $controller->getLang();
于 2013-07-20T13:28:58.563 回答
0
$sp = new spController();
$sp->getLang();

或者spController,您的应用程序中的某个地方可能已经存在一个实例

于 2013-07-20T13:26:21.607 回答