PHP:真的很混淆$ this"故障"在静态调用的方法中调用时

时间:2015-02-23 15:30:26

标签: php static scope this

这是其中之一"我的代码有效,我不知道为什么"次。

我在实例化的类中有一个方法,它静态地调用一个基本上是静态类的方法。我说"基本上"因为在编码时我忽略了将类的方法声明为静态。有问题的方法属于第一类,但我盲目地复制/粘贴代码(最初是内部的)并且没有完全更新所有内容,所以$ this->即使该方法不属于它所属的类别,它仍然存在。

所以,基本上我有这个:

class MyClass{
    public function callOtherMethod(){
        OtherClass::otherMethod();
    }
    public function myMethod(){
        echo 'Tada!';
    }
}

class OtherClass{
    public function otherMethod(){
        echo get_class($this);
        $this->myMethod();
    }
}

$thing = new MyClass();
$thing->callOtherMethod();

在我做了一些清理并明确声明了OtherClass'方法静态,因为它们的意图。一切都有效,因为由于某些原因我不知道,在OtherClass中使用$ this而不是引用调用它的实例化对象(即MyClass)。

我认为这应该是可能的,不是吗?我知道它的编码标准很差,而我正在进行修改以避免它,但我发现它确实非常奇怪。

0 个答案:

没有答案