这是其中之一"我的代码有效,我不知道为什么"次。
我在实例化的类中有一个方法,它静态地调用一个基本上是静态类的方法。我说"基本上"因为在编码时我忽略了将类的方法声明为静态。有问题的方法属于第一类,但我盲目地复制/粘贴代码(最初是内部的)并且没有完全更新所有内容,所以$ 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)。
我认为这应该是可能的,不是吗?我知道它的编码标准很差,而我正在进行修改以避免它,但我发现它确实非常奇怪。