我认为在类函数声明中使用static
关键字意味着您可以使用范围解析运算符(::
)在没有类实例的情况下调用该函数。 / p>
例如:
class Foo
{
public static function static_function() {
return 'x';
}
public function non_static_function() {
return 'y';
}
}
// to call static_function:
echo Foo::static_function();
// to call non_static_function:
$foo = new Foo();
echo $foo->non_static_function();
static
上的PHP.net文档似乎支持这个想法。
我昨天遇到了一些代码,有人使用未使用static关键字定义的范围解析运算符编写了访问类函数的函数。看到这个有用,我感到很惊讶和困惑。
鉴于我上面定义的课程Foo
,事实证明你可以做到:
echo Foo::static_function();
echo Foo::non_static_function();
导致输出xy
,而不会产生任何错误或警告。
如果您可以在没有static
关键字的情况下访问非静态类函数,那么它有什么意义呢?
答案 0 :(得分:1)
导致输出xy而不产生任何错误或警告。
没办法。必须已在该环境中关闭错误报告。这肯定会产生Strict Standards
警告通知。