Re: [RFC] Reclassifying engine warnings
| From: | Zeev Suraski | Date: | Wed, 28 Aug 2019 10:40:47 +0000 |
| Subject: | Re: [RFC] Reclassifying engine warnings | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-106715@lists.php.net to get a copy of this message | ||
On Wed, Aug 28, 2019 at 12:33 PM Nikita Popov <nikita.ppv@gmail.com> wrote:
> Hi internals,
>
> I think it's time to take a look at our existing warnings & notices in the
> engine, and think about whether their current classification is still
> appropriate. Error conditions like "undefined variable" only generating a
> notice is really quite mind-boggling.
>
> I've prepared an RFC with some suggested classifications, though there's
> room for bikeshedding here...
>
> https://wiki.php.net/rfc/engine_warnings
Specifically on undefined variables, the way we deal with them has little
to do with register_globals. It's behavior you can find in other dynamic
languages (e.g. Perl), and allows for certain code patterns (which rely on
the automatic creation of a variable whenever it's used in write context,
and on a default known-in-advance value in case it's used in a read
context). It's fine not to like this behavior or the code patterns that
commonly rely on it (e.g., @$foo++), but it's intentional and isn't related
to any historical reasons.
I think many (if not all) of your proposals make sense, but most of them
make sense as an opt-in - perhaps using something similar to Perl's strict
mode (which incidentally, changes the way the language treats undefined
variables in exactly the same way). This would also provide a future-proof
solution for additional similarly-themed proposals (such as strict ops,
etc.).
Zeev