trailing-comma
Víceřádkový seznam končí čárkou za poslední položkou, jednořádkový ji nemá.
Opravuje · v presetech dresscode/per, dresscode/nette · pokrývá
no_trailing_comma_in_singleline, trailing_comma_in_multiline,
SlevomatCodingStandard.Arrays.TrailingArrayComma,
SlevomatCodingStandard.Functions.RequireTrailingCommaInCall, SlevomatCodingStandard.Functions.RequireTrailingCommaInDeclaration
Co pravidlo hlídá
Čárka za poslední položkou víceřádkového pole má praktický důvod: přidání další položky změní v diffu jeden
řádek, ne dva. PHP ji od verze 7.3 snese i v argumentech volání, od 8.0 v parametrech a v use closure,
takže tentýž zvyk platí všude, kde se seznam rozepisuje na řádky. Naopak v seznamu na jednom řádku čárka na konci nic
neusnadňuje a jen vypadá jako překlep.
O všem rozhoduje zavírací závorka. Když stojí na vlastním řádku, seznam je víceřádkový a čárka tam patří;
když stojí na řádku poslední položky, seznam se považuje za jednořádkový, i kdyby některá položka sama zabírala
víc řádků, a čárka tam být nesmí. Volba multiLine říká, kterých druhů seznamů se čárka týká;
singleLine řídí odstranění čárky z jednořádkových polí, argumentů a list().
Příklad
$colors = [
'red',
'green'
]; // A multi-line array must end with a trailing comma
$sizes = ['S', 'M', 'L',]; // No trailing comma in a one-line list
$matrix = [
[1, 2],
[3, 4],]; // No trailing comma before a closing bracket on the line of the last item of a multi-line array
$colors = [
'red',
'green',
];
$sizes = ['S', 'M', 'L'];
$matrix = [
[1, 2],
[3, 4]];
Poslední případ ukazuje, kdo rozhoduje: závorka na řádku poslední položky dělá ze seznamu jednořádkový, takže tam
čárka nepatří. Přesunout závorku na vlastní řádek je práce pravidla multi-line-array; teprve pak sem
čárka přijde.
Volby
multiLine
Seznam hodnot arrays, arguments, parameters, match,
closureUses, výchozí [arrays]. Druhy seznamů, které při zavírací závorce na vlastním řádku
končí čárkou. Preset dresscode/per zapíná všech pět, dresscode/nette pole, argumenty a
parametry.
Zadaný seznam nahrazuje výchozí, neslučuje se s ním: multiLine: [arguments] zapne čárku u argumentů a
vypne ji u polí.
rules:
dresscode/trailing-comma:
multiLine: [arrays, arguments, parameters]
function send(
string $to,
string $subject
): void { // A multi-line parameter list must end with a trailing comma
mail(
$to,
$subject
); // A multi-line argument list must end with a trailing comma
}
function send(
string $to,
string $subject,
): void {
mail(
$to,
$subject,
);
}
singleLine
bool, výchozí true. Z pole, seznamu argumentů nebo list() zapsaného na jednom
řádku se koncová čárka odstraní, ať multiLine říká cokoli. S hodnotou false pravidlo
jednořádkové seznamy nechá být.
rules:
dresscode/trailing-comma:
singleLine: false
$sizes = ['S', 'M', 'L',];
Související pravidla
multi-line-arrayrozepíše položky víceřádkového pole na samostatné řádky a zavírací závorku na vlastní řádekmulti-line-callamulti-line-signaturedělají totéž s argumenty a parametry
Zdroj
Třída TrailingCommaRule, fixtury trailing-comma.