Am 02.03.2020 um 15:00 schrieb Marco Pivetta <ocram...@gmail.com>:
> Overall against the RFC: `++` and `--` (prefix and suffix) are supposed to
> be used with numeric values, not with other types, as that makes everything
> only more confusing.
> 
> Code written (intentionally) to use `++` and `--` against non-numeric
> values should **NOT** pass a code review, and I am sorry for those that
> have to maintain it if that happens.

There are still those who find
        $wordcount[$word]++;
useful enough to support both ++ on null as well as usage of uninitialised 
array indices.

Please respect this kind of code, it is out there and fully functional.

> Changing the current behavior, regardless in which way, is a BC break:
> might as well make the BC break useful:
> 
> RFC Proposal: `$a = null; $a--; $a === -1`. Let's make this an explicit
> TypeError instead.
> RFC Proposal: `$a = null; --$a; $a === -1`. Let's make this an explicit
> TypeError instead.
> 
> RFC Proposal: `$a = true; $a++; $a === 2`. Let's make this an explicit
> TypeError instead.
> RFC Proposal: `$a = true; ++$a; $a === 2`. Let's make this an explicit
> TypeError instead.
> RFC Proposal: `$a = true; $a--; $a === 0`. Let's make this an explicit
> TypeError instead.
> RFC Proposal: `$a = true; --$a; $a === 0`. Let's make this an explicit
> TypeError instead.
> 
> RFC Proposal: `$a = false; $a++; $a === 1`. Let's make this an explicit
> TypeError instead.
> RFC Proposal: `$a = false; ++$a; $a === 1`. Let's make this an explicit
> TypeError instead.
> RFC Proposal: `$a = false; $a--; $a === -1`. Let's make this an explicit
> TypeError instead.
> RFC Proposal: `$a = false; --$a; $a === -1`. Let's make this an explicit
> TypeError instead.

I don't care too much about -- but *if* you want to discourage ++ on those 
types then make it E_STRICT, E_NOTICE or even E_WARNING.
Similar for non-numeric increments.

> In **addition** to that, we may propose removal of `++`, `--` and similar
> from non-numeric types (will lead to TypeError) like Andrea started in
> https://wiki.php.net/rfc/invalid_strings_in_arithmetic
> 
> It makes no sense to keep a landmine there: let's get rid of it, instead of
> empowering it further (and breaking BC too, while doing so).

I see your point and I can live with E_* but breaking well-defined and 
functioning code because you don't like $null++ is wrong. 

- Chris

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to