Hi internals, In every place where `key` is a valid php identifier (e.g. can be used in PHP 8.0's named parameters), I propose to allow `[key: expr]` to be used instead of `['key' => expr]`. (including `list(key: expr)` and `array(key: expr)` (This can be mixed anywhere with existing key/value syntax such as `$key => $value`, `...`, etc)
The implementation can be found inathttps://github.com/php/php-src/pull/6635 This is useful for shortening long arrays where the keys are known literals, e.g. ```php return [success: true, data: $data, cursor: $cursor]; // is equivalent to the following, but shorter: return ['success' => true, 'data' => $data, 'cursor' => $cursor]; ``` This uses a similar syntax to named parameter invocations, making it unlikely to cause future parser conflicts. ```php // Invoking a function with PHP 8.0 named parameters. process_api_result(success: true, data: $data); ``` This can also be used in the older `array()` value and `list()` destructuring syntaxes. Forbidding `key: value` there seemed like an unnecessary restriction that would make the language harder to remember and a language specification a bit longer. I haven't written up an RFC yet, but an older RFC for PHP 5 https://wiki.php.net/rfc/bare_name_array_literal includes most of the arguments I plan to make, as well as the PR description. Things that have changed since then include: - In php 8.0, named parameters were already added, so the `key: expr` syntax is not likely to cause conflicts with future syntax. - Users would already be familiar with this syntax and its meaning due to named parameters. - There are better open source static analyzers to detect misuse of array keys or passing unexpected types to arrays (Phan, Psalm, PHPStan) when code is properly annotated https://wiki.php.net/rfc/named_params#shorthand_syntax_for_matching_parameter_and_variable_name mentioned this among the future scope. It had also suggested `:$var` or `=$var` as shorthand for `var: $var`, but this is going to be left out of this feedback - https://externals.io/message/101698 has mostly negative feedback on a recent proposal (and there are multiple syntax candidates) Any feedback? Thanks, Tyson -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php