PHP中是否需要“static”关键字?

时间:2010-08-02 12:18:27

标签: php

似乎uaa()函数可以用作静态函数,即使它没有特别定义。我想知道是否有必要使用“static”关键字。

<?php

class foo
{
    functon uaa()
    {
        // do something
    }
}

2 个答案:

答案 0 :(得分:10)

我不确定。但是,如果你这样做,它会触发一个E_STRICT:

  

严格标准:非静态方法   不应该调用a :: non_static()   静态地在c:\ file.php上   第12行

明确什么是静态的,什么不是静态的可能是明智的,至少所以你不太可能尝试访问$this而不是在对象上下文中。

答案 1 :(得分:4)

严格来说,您可以静态调用非静态函数。但是,您将生成E_STRICT错误。如果你在方法中使用$this,你会得到一个更大的错误(我很确定它是E_WARNING,但它可能更重要。)

static关键字已被强制执行。这是为了防止您尝试从实例调用静态方法。因此,虽然并非严格需要,但使用它来识别和部分执行适当的呼叫是一种很好的设计实践。

另外,它还有“未来证明”你的代码。我的意思是,在PHP的更高版本中,当您可以静态调用非静态方法时,它们可能会删除“功能”(这就是为什么它现在是E_STRICT错误)。