Re: Remove $this from incompatible context
| From: | Kris Craig | Date: | Thu, 12 Feb 2015 21:45:05 +0000 |
| Subject: | Re: Remove $this from incompatible context | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-82562@lists.php.net to get a copy of this message | ||
On Thu, Feb 12, 2015 at 8:53 AM, Rowan Collins <rowan.collins@gmail.com>
wrote:
> François Laupretre wrote on 12/02/2015 14:56:
>
>> Sorry to get off-topic but could we raise the 'undefined variable' error
>> to E_WARNING, at least ? E_NOTICE seems very low for such an error.
>>
>
> I think the division between E_NOTICE and E_WARNING is a bit arbitrary
> sometimes, but without a good definition of the difference, I think it's
> unhelpful to introduce "inflation" by raising severities. Don't forget that
> while an undefined variable is sometimes an error, it's sometimes just poor
> coding style, and the user is consciously relying on the implicit null
> (e.g. $count++, or $hash[$key] = $value, or even echo $hash[$key]).
>
> Perhaps what's needed is a survey of current messages, and an RFC to
> reclassify them based on some consistent definitions?
>
> Regards,
> --
> Rowan Collins
> [IMSoP]
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
I would also like to see undefined variables escalated to E_WARNING. Even
though it is often bad coding style, it's also frequently just an oversight
on the part of the developer; an oversight that can lead to unexpected
results. Since it's very common for environments to display E_WARNING but
not E_NOTICE, some devs-- particularly those who are less experienced in
PHP-- can end up wasting a lot of time trying to chase down the behavior
because they're not seeing any errors.
Besides, making it only an E_NOTICE, we're encouraging people to develop
bad habits that can and do lead to all kinds of problems down the line. I
know many devs who erroneously believe that declaring variables is actually
discouraged in PHP. When I point out that not declaring a variable will
throw a notice, they always seem surprised; something along the lines of,
"Oh yeah I never see those."
Given the problems that can arise from this, I think that's reasonable
justification enough to make this an E_WARNING instead of E_NOTICE.
--Kris