Le 12/01/2021 à 17:35, Ilija Tovilo a écrit :
Hi Marco
On Tue, Jan 12, 2021 at 5:19 PM Marco Pivetta <ocram...@gmail.com> wrote:
On Mon, Jan 11, 2021, 15:29 Nikita Popov <nikita....@gmail.com> wrote:
Hi internals,
I would like to present a draft RFC for allowing object keys in arrays:
https://wiki.php.net/rfc/object_keys_in_arrays
Overall, this is something I always wanted, but adding it means that the
type of all array functions returning keys widens, which is quite the BC
hell 🤔
The basic assumption is that, when an `array` is given, `foreach ($array as
$key => )` produces a `$key` if type `string|int`.
While this assumption does not hold true for `iterable` (notably
`SplObjectStorage`, `Generator`), it's still quite a jump to break it here,
so it would probably require scheduling such a feature for 9.0.
Definitely disagree here. Your existing code will continue to work fine
without changes. It is only after passing objects as keys to other
functions with the assumption above that your code breaks. Sure, this will
require code changes for frameworks to handle these cases gracefully but it
won't suddenly break your website that hasn't been touched for years.
Note that even minor PHP versions have historically not followed strict
semantic versioning. If we did, most PHP features would have to be pushed
back years given PHPs relatively slow release cycle. I don't think that's
desirable for neither PHP developers nor maintainers.
I do agree with Marco, lots of generic code manipulating array keys will
be prone to failure with such feature, it is a breaking change.
Nevertheless, the feature is so appealing that I'm definitely OK with
fixing all the things ! Nevertheless, lots of major frameworks and
libraries will having tests to write, and fixes to do, and the
transition to support will probably be erratic and slow.
--
Pierre
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php