严格标准:非静态方法

时间:2013-04-09 09:07:15

标签: php methods static strict

我正在运行Ubuntu + PHP 5.4并且出现了这样的错误:

  

严格标准:非静态方法XTemplate :: I()不应该   静态调用,假设$ this来自不兼容的上下文   ...   在第339行

这个方法看起来像这样:

interface ITemplate
{
    public function I();
}

class XTemplate implements ITemplate
{
    public function I()
    {
             ...
    }
}

此代码在XAMPP中的Windows 7上正常运行。 我发现只有关闭error_reporing的建议,但我需要解决它。 我是否需要在php.ini中的其他一些设置上安装一些模块?

2 个答案:

答案 0 :(得分:4)

您收到错误消息是因为您静态调用该函数而不是创建XTemplate类的实例。根据您的具体情况,将功能设为静态:

static public function I()
    {
             ...
    }

或者首先创建一个XTemplate实例:

$myXtemplate = new XTemplate();
$myXtemplate->I();

我希望这能回答你的问题。

编辑: This page可能会对您感兴趣。

答案 1 :(得分:-1)

我遇到了同样的错误,您只需更改界面:      public function I();更改为      public static function I();并在创建实例时使用

public static function I();

我希望这有帮助。