I wasn't proposing that my example be supported. I'm totally okay with the
fact that it doesn't. My question was about whether or not those kinds of
optimizations are documented anywhere so that developers can make sure they
don't miss out on them by not fitting the proper pattern.

On Tue, Sep 15, 2020 at 9:40 AM Benas IML <benas.molis....@gmail.com> wrote:

> Hey,
>
> During my free time, I'm implementing that specific `array_keys`
> optimization. I'm not planning on supporting cases like yours (i. e.
> indirection through a variable) since there's no point in doing that. And
> also, it's not feasible to support every use case. Should we also support
> cases like this?
>
> ```php
> $a = 'array_keys';
> $b = $a(...);
> $c = 'b';
>
> foreach ($$c as $key) {
>     ...
> }
> ```
>
> Obviously not. `\array_keys` optimization will work the same way as an
> optimized `strlen` function works.
>
> That means that the optimization is only going to be applied if the
> `array_keys` function is used directly in the `foreach` loop and only if a)
> either the namespace is global b) or `\array_keys(...)`/`use function
> array_keys` is used.
>
>
> Best regards,
> Benas
>
> On Tue, Sep 15, 2020, 4:23 PM Chase Peeler <chasepee...@gmail.com> wrote:
>
>> I brought this up on another thread, but it wasn't addressed (which is
>> fine, since it was somewhat off-topic). I thought it might be
>> worth bringing up in its own thread, though.
>>
>> In the other thread, someone had mentioned the following compiler
>> optimization
>>
>> foreach(\array_keys($arr) as $key) {
>>
>> and quietly transform that into:
>>
>> foreach ($arr as $key =>
>> $_unusedVariableNameThatIsntEvenSpilledToTheScope)
>> {
>>
>> I would be more likely to write:
>>   $keys = array_keys($arr);
>>   foreach($keys as $key){
>> Which would prevent me from being able to take advantage of the
>> optimization.
>>
>> So, what I was wondering, is if there are other optimizations I might be
>> missing out on, and if so, are they documented anywhere?
>>
>>
>> --
>> Chase Peeler
>> chasepee...@gmail.com
>>
>

-- 
Chase Peeler
chasepee...@gmail.com

Reply via email to