PHP中静态类函数的用途

时间:2014-03-11 10:11:11

标签: php static static-methods

我认为在类函数声明中使用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关键字的情况下访问非静态类函数,那么它有什么意义呢?

1 个答案:

答案 0 :(得分:1)

  

导致输出xy而不产生任何错误或警告。

没办法。必须已在该环境中关闭错误报告。这肯定会产生Strict Standards警告通知。