Re: ArrayAccess and array_key_exists function
| From: | Robert Landers | Date: | Tue, 20 Feb 2024 13:21:57 +0000 |
| Subject: | Re: ArrayAccess and array_key_exists function | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-122442@lists.php.net to get a copy of this message | ||
On Mon, Feb 19, 2024 at 1:35 PM Ondřej Mirtes <ondrej@mirtes.cz> wrote:
>
> Hello everyone,
> I was recently surprised that ArrayAccess does not work with array_key_exists() function.
>
> I am aware that ArrayAccess objects cannot be made to work with many array functions because it
> does not provide a way to iterate over its keys, you can only ask for and set specific previously
> known keys.
>
> But it could be made to work with array_key_exists(), because it already works with isset() and
> there’s a direct method that could be used for this - offsetExists().
>
> The use case I have in mind is that sometimes libraries that originally use “array” in
> return types want to switch to objects and they make these objects to implement ArrayAccess, for
> maximising the backward compatibility with the old version. This mostly works, except for
> array_key_exists().
>
> Do you think we could add support for ArrayAccess objects in the 2nd parameter of
> array_key_exists() function?
>
> Thank you.
>
> Ondřej Mirtes
I'd love to see all array_* functions accept iterators/objects instead
of only just arrays. Yes, I know the name says "array" but often we
just mean "do this operation on this thing that looks enough like an
array for now."
Robert Landers
Software Engineer
Utrecht NL