Martin Brotzeller came across an interesting behavior in a script he was recently working on involving two classes and an error that should have been thrown.
Over the weekend i encountered a twist in PHP that really left me wondering. I made a mistake and i thought i should have gotten an error, or at least a warning. I got a completely unexpected behavior instead. According to our PHP Oracle this is just a legacy from PHP 4 though and there was much Discussion whether changing this behavior would break old apps. I think it's a possible source of hard-to-track errors though.
His code creates an object, a and calls the bar() method. Inside bar(), object b is created and the foo() method of b is called. The real oddity comes in when, inside the b->foo() call, $this->mprint() is called but it's the one defined in object a that executes, not in b.