I'm debugging someone else's php code that is heavily OO.
They have an object, in it a method that calls another method on another object. Pretty normal stuff:
class U_Controller extends Controller { public function add_p($id) { ... error_log("a"); $i->save(); error_log("b"); }
When it runs I get "a" in the logs, but *never* "b"!! I'm really stumped. I'm pretty sure it's not calling exit() or die() or any other halting statement as I put some hooks and debugs in and it's clearly exiting out the bottom of the file as it should.
The save() call seems to complete ok as I've put debugs into it and I can see it running and finishing. However, it is complicated by the fact that this code is a nightmare and save() seems to re-call itself through convoluted OO calls with cycles. But again, it all seems to exit out the bottom as it should.
How can this possibly occur? What other way can a function or object skip out of itself like that without running that log "b"?
Note: the above is actually in a try/catch block but I put debugs in the catch and they don't seem to be running, so I don't think that's it either?
It's like there's a "return2steps" or "call-this-method-again-and-ignore- the-first-invocation" or something going on. Or I'm missing something obvious because I never use OO/framework-heavy code like this.
(P.S. framework appears to be Bootstrap.)