Re: [RFC] Deprecations for PHP 8.6
| From: | Seifeddine Gmati | Date: | Thu, 02 Jul 2026 00:45:55 +0000 |
| Subject: | Re: [RFC] Deprecations for PHP 8.6 | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-131691@lists.php.net to get a copy of this message | ||
On Thu, 2 Jul 2026 at 01:11, Juliette Reinders Folmer
<php-internals_nospam@adviesenzo.nl> wrote:
> Ahum.... I'm one of the maintainers of the WordPress Coding Standards, which is the team
> which would address these type of syntax changes for WP.
Fair enough, and I'll happily take your word on the WP side. So I
withdraw the "cautious about treating it as WP's position" point.
It doesn't change my conclusion, though. That a group of core
committers has repeatedly blocked short-array syntax for their own
codebase is entirely their prerogative, but it's a project style
decision, not an argument about the language. WordPress doesn't set
PHP's direction, and "one large project prefers the older form" can't
be the reason PHP keeps a redundant construct indefinitely. Styles
adapt to the language at the version they target; that's the normal
direction of the relationship.
> The fact that the
list() name may be confusing is IMO not a
> valid argument. That keyword has been in use for that particular purpose since a very long time in
> PHP - and even longer in other languages.
I disagree. As far as I'm aware, no other language uses list as the
*destructuring construct*; please point me to one if you know it, I'd
be genuinely interested. The languages I know all use a bracket/paren
form with no keyword: JS [a, b] = arr, Python a, b = seq, Rust
let [a, b] = arr, Swift let (a, b) = t. Others, such as SML,
OCaml, and Haskell, have a "List" module or type, but again, that's a
different thing.
Perl is the closest relative and I suspect PHP's inspiration, but Perl
writes it as bare parentheses, ($a, $b) = @arr, and calls the
operation "list assignment," where "list" means the parenthesised list
of values. There's no list(...) keyword doing the unpacking.
And that actually cuts the other way: Perl can call it "list
assignment" because Perl has a genuine first-class list. PHP doesn't
have a list type at all, so the keyword names something that doesn't
exist in the language. It destructures an array and even accepts keys
(list("k" => $v) = $a), which a genuine "list" would not.
Cheers,
Seifeddine