动态实例化对象 静态方法


instantiating a object on the fly a static method?

我不太确定以下对象实例化叫什么,但它来自我正在阅读的一篇文章。

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 ...

此方法是否以某种方式称为静态方法?

::不代表static method,这是一个误解。::是一个"范围解析运算符",它表示通过其类谓词全名来标识方法。

所以这仅仅意味着:"由类'foo'定义的方法'ou'"。不多也不少。

No.该错误仅指示该方法不存在。它始终显示此错误::,无论您是否以静态方式调用该方法。如果将代码更改为:

$foo = new foo();
echo $foo->ou();

根据注释中的请求的第二个代码示例:

$moo = new moo(); // Parentheses optional, I guess
$foo = new foo($moo);
$foo->out();