Re: Allow Iterator to be used with current, next, reset,key functions
| From: | Christoph M. Becker | Date: | Mon, 31 Oct 2016 16:16:08 +0000 |
| Subject: | Re: Allow Iterator to be used with current, next, reset,key functions | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-96674@lists.php.net to get a copy of this message | ||
On 30.10.2016 at 18:19, Rowan Collins wrote:
> On 30/10/2016 12:07, Fleshgrinder wrote:
>
>> I think it makes much more sense to deprecate all of them and introduce
>> new ones that work in the way we want them to for several reasons.
>>
end() and reset() would
>> have to continue working as they do until
>> the next major release since people who use them might rely on the way
>> they work. This means in effect that nobody can make her PHP 7 code PHP
>> 8 ready up front.
>>
>> Instead we could directly introduce array_first() and
>> array_last()
>> with the next feature release -- even if the others are not deprecated
>> -- and everyone can update their code or at least use it in new code.
>
> I've always felt like these functions were "missing" from the language -
> there are a number of ways you *can* get the first or last item in an
> array, but all have side effects, because they're not designed for this
> purpose. It just so happens that - most of the time - reset() and end()
> have the smallest side effects.
>
> I can't remember if it was an earlier discussion here, or somewhere
> else, that pointed to getting the first and last *key* as an extra use
> case worth considering. It's currently possible (if awkward) with key().
>
> I think it would make sense to, in the same version:
>
> - deprecate reset(), end(), each(), and key()
> - introduce array_first(), array_last(), array_first_key() and
> array_last_key()
> - document replacements for whatever other use cases we can find
> examples of
>
> Doing them all at once makes the messaging much clearer - this family of
> functions is going to be removed; and here are the new functions you can
> start using immediately instead.
I fully agree.
--
Christoph M. Becker