PHP中的非静态方法是如何像静态方法一样被调用的?
请参阅下面的代码。我在类PHP中的非静态方法是如何像静态方法一样被调用的?,php,oop,Php,Oop,请参阅下面的代码。我在类Foo中定义了一个名为bar的非静态方法。但是我使用Foo::bar()语法调用该方法,就好像它是静态的一样。它可以工作: 为什么我没有得到一个致命的错误,我试图调用一个非静态方法作为静态?你能给我指一下官方的PHP文档,它澄清了这一点吗?这里你不会得到致命的警告,而是一个严格的标准通知 严格标准:不应调用非静态方法Foo::bar() 静态地 始终启用错误报告(-1)在您测试的任何代码上。如果启用了此选项,您可以在输出中看到上述内容 查看文档我认为它将生成警告。可能
Foo
中定义了一个名为bar
的非静态方法。但是我使用Foo::bar()
语法调用该方法,就好像它是静态的一样。它可以工作:
为什么我没有得到一个致命的错误,我试图调用一个非静态方法作为静态?你能给我指一下官方的PHP文档,它澄清了这一点吗?这里你不会得到致命的警告,而是一个严格的标准通知 严格标准:不应调用非静态方法Foo::bar() 静态地 始终启用
错误报告(-1)代码>在您测试的任何代码上。如果启用了此选项,您可以在输出中看到上述内容
查看文档我认为它将生成警告。可能很严格
定义静态方法的主要原因是您不能使用$This对象引用静态函数中的任何其他公共成员
如果您试图在静态函数中使用$this,您将得到一个致命错误:当不在对象上下文中时使用$this
概念是,静态方法是关于应用限制,以及在程序执行期间如何处理限制。-至于您对缺少致命错误的困惑;PHP是一种脚本语言。
<?php
class Foo
{
public function bar()
{
echo "hello, world\n";
}
}
Foo::bar();
?>