Looking for more information on how to do PHP the right way? Check out PHP: The Right Way

ThinkPHP Blog:
Spooky Action at not so much Distance
Sep 20, 2007 @ 10:27:00

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.

tagged: class spooky action php4 object class method class spooky action php4 object class method

Link: