Re: [RFC] Allow object keys in arrays
| From: | Marco Pivetta | Date: | Tue, 12 Jan 2021 16:18:28 +0000 |
| Subject: | Re: [RFC] Allow object keys in arrays | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-112850@lists.php.net to get a copy of this message | ||
Hi Nikita,
On Mon, Jan 11, 2021, 15:29 Nikita Popov <nikita.ppv@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
>
> The specification in the RFC is incomplete, and primarily focussed on what
> impact this has from an internal perspective.
> https://github.com/php/php-src/pull/6588 is a draft
> implementation that
> illustrates the necessary changes.
>
> The primary motivation, and reason why I am looking into this now, is that
> the current enum proposal is based on objects, and I consider it somewhat
> important that enum values can also work as array keys.
>
> From a technical perspective, this also lays the groundwork for supporting
> other key types in the future, e.g. if we wish to switch PHP to use
> arbitrary-precision integers.
>
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.
>