Re: Re: [RFC] Short Array Variable Shorthand
| From: | David CARLIER | Date: | Wed, 30 Sep 2026 07:53:22 +0000 |
| Subject: | Re: Re: [RFC] Short Array Variable Shorthand | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-132708@lists.php.net to get a copy of this message | ||
Sorry for the confusion, I did not mean a parser conflict. I meant
more that a single missing comma silently turns one valid program into
another:
$b = 5;
$arr = [$a =$b]; // today: assigns 5 to $a, $arr is [0 => 5]
$arr = [$a, =$b]; // with the RFC: $arr is [0 => $a, 'b' => 5]
Cheers.
On Wed, 30 Sept 2026 at 08:43, Weilin Du <weilin-du@qq.com> wrote:
>
> Hi all,
>
> I am goiing to reply to the thread with this single email.
>
> Firstly assignment expressions works well in this context.
> The first token before
= of [$x =
> $y] is different to [$x, =$y].
> Hence it will never conflict.
>
> Secondly for compact and extract functions. I was aware.
> The different is
>
> a. They can't mix the shorthand with explicit keys:
> ```
> $user = ['id' => 1, =$name, =$age];
> ```
> b. extract overwrite vars with the same name. But in this context
> we can declare the var name to be written
> ```
> [=$name] = $row
> ```
> c. They don't work in foreach loop.
>
> Thirdly to prove its usefulness. Well, I'd say this works well with
> my experience esp in returning arrays for functions. Because in my
> code base, the local var's name could be the same to its key's name
> and if some of it don't we just exlicitly state it there.
> ```
> return ['x' => $point_x, =$y, =$z];
> ```
>
> If you want me to prove this pattern in the code base. It's hard to
> give out the overall statistics but I can provide some usage in famous
> php project I see [1][2][3][4]
>
> Thus, I am not convinced. This feels useful in my experience. But I know
> different devs have various taste to pl design and I am one of those perl
> fan when it comes to this syntax. And I can see why some may feel bad in
> it.
>
> I will leave the DTO stuff after I done the implementation. However, it feels
> like I can already withdraw this RFC given the state of current discussion.
>
> Thanks for ideas anyways :)
>
> BR,
> Weilin Du
>
> [1]:
> https://github.com/composer/composer/blob/d25ce76a0624857740fe238e0b63ac09e82bbd8f/src/Composer/Command/RunScriptCommand.php#L181
> [2]:
> https://github.com/laravel/framework/blob/6070a6d7e9804a490b12cb889173fbb926b8e3c8/src/Illuminate/Cache/DatabaseStore.php#L225
> [3]:
> https://github.com/sebastianbergmann/phpunit/blob/027d1eb8cac21f6c9b9427ea9437d61785489fc4/src/TextUI/Configuration/SourceMapper.php#L96
> [4]:
> https://github.com/symfony/http-foundation/blob/1c588354b1d2c94ed588edc33914bbf2978cd3ce/FileBag.php#L116