【问题标题】:Scope resolution operator and class method范围解析运算符和类方法
【发布时间】:2013-06-13 13:21:08
【问题描述】:

好吧,我不明白为什么这段代码可以工作

class MyObject  {
    public function myBaseMethod()
    {
        echo 'I\'m declared in' . __CLASS__;
    }

}

$instance = new MyObject();
$instance->myBaseMethod();
MyObject::myBaseMethod();

 // Output
I'm declared inMyObject
I'm declared inMyObject

我可以通过创建 MyObject 类的新实例或作为静态方法调用 myBaseMethod()。但是 myBaseMethod 没有声明为静态的。

我认为我只能将 :: 用于静态成员/方法。

请解释一下

【问题讨论】:

标签: php class oop methods static


【解决方案1】:

是的,这是可能的。我想知道为什么。但是请注意,PHP 会抛出一个E_STRICT 错误,这对于新代码来说绝对是不可接受的,而它可能发生在遗留代码中。您不应调用未声明为静态的静态方法。尝试修复遗留代码。

【讨论】:

    猜你喜欢
    • 2012-04-20
    • 2018-04-24
    • 2013-05-31
    • 2011-05-19
    • 2011-07-28
    • 2010-09-09
    • 2014-10-05
    • 2015-12-18
    • 1970-01-01
    相关资源
    最近更新 更多