Re: RFC: Catchable "call to a member function of a non-object"

From: Date: Tue, 29 Apr 2014 08:46:08 +0000
Subject: Re: RFC: Catchable "call to a member function of a non-object"
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-73841@lists.php.net to get a copy of this message
Derick Rethans wrote on 29.04.2014 10:26: > On Sun, 27 Apr 2014, php@thekid.de wrote: > >> Hello everyone, >> >> as per the RFC process I'd like to start a discussion on the RFC >> I've put up on the RFC Wiki: >> >>   >> https://wiki.php.net/rfc/catchable-call-to-member-of-non-object >>   RFC: Catchable "call to a member function of a non-object", 1.0 >> >> The essence of this pull request is that it converts this fatal error >> into E_RECOVERABLE_ERRORs. Framework authors may choose to convert >> these into exceptions, as they already do with argument type mismatches. >> >> Feedback is welcome! > > Besides the technical issues that Johannes already mentions, I am also > against this for logic reasons. > > Calling methods on NULL objects is a programming mistake. You either > have a bug in the code that creates the objects, and in cases where it > is somethings OK to not have an object, you forgot to check whether you > have an objects. Programming mistakes should not be hidden by error > handlers. Hello Derick, the RFC is not about hiding programming mistakes, it is still possible to return false in the error handler. Btw. PHP tolerates a lot of programming mistakes, see Warning, Notice and that's why we like PHP. In most cases (like concurrent deletes), additional checks take a lot of time for implementation and testing and in most cases, the code is never executed. There are many functions (like mysqli::query, mysqli::prepare) that return false|null|object. Covering everything with if(...) makes the code bigger and less readable. Regards, Thomas

« previous php.internals (#73841) next »