我不太确定调用了以下对象实例,但它来自我正在阅读的文章。
class foo
{
function out()
{
return 'hello';
}
}
echo (new foo())->out();
自动实例化对象并调用out方法。但我真正理解的是,当我将out()方法重命名为虚构方法时,我得到如下错误:
示例:
class foo
{
function out()
{
return 'hello';
}
}
echo (new foo())->ou();
Fatal error: Call to undefined method foo::ou() in ...
这种方法是否以某种方式被称为静态方法?
答案 0 :(得分:3)
::
不代表static method
,这是一种误解。 ::
是“范围解析运算符”,它表示通过类谓词全名识别方法。
所以这只是意味着:“方法'ou'由类'foo'”定义。不是更多,而不是更少。
答案 1 :(得分:2)
没有。该错误仅表示该方法不存在。无论您是否以静态方式调用方法,它始终会显示此错误的::
。如果您将代码更改为:
$foo = new foo();
echo $foo->ou();
根据评论中的请求的第二个代码示例:
$moo = new moo(); // Parentheses optional, I guess
$foo = new foo($moo);
$foo->out();