rfc:trailing_comma_in_parameter_list

PHP RFC: Allow trailing comma in parameter list

Introduction

This RFC proposes to allow an optional trailing comma in parameter lists. This is already supported for argument lists.

Consider the constructor of the League\Uri\Uri class:

class Uri {
    private function __construct(
        ?string $scheme,
        ?string $user,
        ?string $pass,
        ?string $host,
        ?int $port,
        string $path,
        ?string $query,
        ?string $fragment // <-- ARGH!
    ) {
        ...
    }
}

This constructor has too many parameters to place all of them on one line, at least under conventional coding standards. In such cases PSR-12 recommends to use the formatting above instead.

Unfortunately, it is currently not possible to place a trailing comma in the parameter list. This breaks uniformity, and results in larger diffs when a new optional parameter is added. Additionally, it is inconsistent with call-sites, which do allow a trailing comma:

new Uri(
    $scheme,
    $user,
    $pass,
    $host,
    $port,
    $path,
    $query,
    $fragment, // <-- Huh, this is allowed!
);

At this point, I'm used to always adding a trailing comma to multi-line lists, regardless of what kind of element they contain. I write the comma by default, and then have to go back to remove it upon receiving an error. We should avoid having this kind of arbitrary restriction.

Proposal

Allow a single optional trailing comma in parameter lists. This includes parameter lists for functions, methods and closures.

Prior Art

Allow a trailing comma in function calls added support for trailing commas in calls.

Trailing Commas In List Syntax was a previous proposal to support optional trailing commas in all list-like structures.

Nothing has substantially changed since those RFCs in technical terms, but I think the aforementioned style for breaking up large parameter lists has become more accepted in the meantime, and features like Constructor Property Promotion are going to increase its use further.

Backward Incompatible Changes

None.

Vote

Voting opened 2020-04-14 and closes 2020-04-28.

Allow trailing comma in parameter lists?
Real name Yes No
ajf Image 
alcaeus Image 
as Image 
asgrim Image 
ashnazg Image 
beberlei Image 
bmajdak  Image
brzuchal Image 
bwoebi Image 
carusogabriel Image 
cmb Image 
colinodell Image 
danack Image 
daverandom Image 
derick Image 
duncan3dc Image 
ekin Image 
galvao Image 
girgias Image 
jasny Image 
jbnahan Image 
jhdxr Image 
kalle Image 
kelunik Image 
kguest Image 
klaussilveira Image 
kocsismate Image 
krakjoe Image 
malukenho Image 
marcio Image 
mariano Image 
mcmic Image 
mfonda Image 
mike Image 
nicolasgrekas Image 
nikic Image 
ocramius Image 
peehaa Image 
petk Image 
pmjones Image 
pmmaga Image 
pollita Image 
ramsey Image 
reywob Image 
royopa Image 
ruudboon Image 
salathe Image 
sammyk Image 
sebastian Image 
sergey Image 
sirsnyder Image 
stas Image 
svpernova09 Image 
tandre Image 
tiffany Image 
trowski Image 
villfa Image 
wyrihaximus Image 
yunosh Image 
Final result: 58 1
This poll has been closed.
rfc/trailing_comma_in_parameter_list.txt · Last modified: by 127.0.0.1

Image