似乎uaa()函数可以用作静态函数,即使它没有特别定义。我想知道是否有必要使用“static”关键字。
<?php
class foo
{
functon uaa()
{
// do something
}
}
答案 0 :(得分:10)
我不确定。但是,如果你这样做,它会触发一个E_STRICT:
严格标准:非静态方法 不应该调用a :: non_static() 静态地在c:\ file.php上 第12行
明确什么是静态的,什么不是静态的可能是明智的,至少所以你不太可能尝试访问$this
而不是在对象上下文中。
答案 1 :(得分:4)
严格来说,您可以静态调用非静态函数。但是,您将生成E_STRICT
错误。如果你在方法中使用$this
,你会得到一个更大的错误(我很确定它是E_WARNING
,但它可能更重要。)
static
关键字已被强制执行。这是为了防止您尝试从实例调用静态方法。因此,虽然并非严格需要,但使用它来识别和部分执行适当的呼叫是一种很好的设计实践。
另外,它还有“未来证明”你的代码。我的意思是,在PHP的更高版本中,当您可以静态调用非静态方法时,它们可能会删除“功能”(这就是为什么它现在是E_STRICT
错误)。