Req #51882 [Com]: Call To Member Function on Non-Object Should Throw An Exception
| From: | binarycleric at gmail dot com | Date: | Wed, 20 Jul 2011 19:47:43 +0000 |
| Subject: | Req #51882 [Com]: Call To Member Function on Non-Object Should Throw An Exception | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-162059@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=51882&edit=1
ID: 51882
Comment by: binarycleric at gmail dot com
Reported by: jacob at mediashaker dot com
Summary: Call To Member Function on Non-Object Should Throw
An Exception
Status: Open
Type: Feature/Change Request
Package: *General Issues
Operating System: Centos 5.3
PHP Version: 5.2.13
Block user comment: N
Private report: N
New Comment:
I disagree with changing this from being a fatal error.
Trying to call a method on an object that doesn't exist should always result in
a fatal error because you are
especially calling non-existent code. Trying to call a procedural function that
doesn't exist should result in the
same behavior. I personally wouldn't want anything other than a fatal error to
occur if I tried to call
"some_import_func($herp, $derp);" and it didn't exist, because there is really
no sane way to recover from that. We
have "function_exists" and "method_exists" for a reason.
If you are having constant problems like this with your code then that is
usually a symptom of a larger problem in
how your application is structured. There are hacks and workarounds to get
stacktrace information after a fatal
error using things like "register_shutdown_function", but your code really
shouldn't try to "recover" from a failure
that catastrophic.
I don't mean for this comment to have an "internet toughguy" additude, I'm just
trying to show you that your code
may have more serious problems then you realize. You already have a good number
of tools in your toolbox, you just
need to learn to use them better.
Previous Comments:
------------------------------------------------------------------------
[2010-05-21 19:19:32] jacob at mediashaker dot com
Description:
------------
Call to a member function on a non-object is one of the most common reasons a php script might
crash.
Granted, there's often a whole chain of responsibility that falls apart for it to get to this
point.
The problem with this fatal error is that it provides absolutely no debugging or traceback
information when it happens. PHP blows up on fatal errors and all you're left with is a line
number and no idea how it got there.
It would be awesome if it threw an exception with it's requisite traceback information.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=51882&edit=1