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.RequireTrailingCommaInCallSlevomatCodingStandard.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-array rozepíše položky víceřádkového pole na samostatné řádky a zavírací závorku na vlastní řádek
  • multi-line-call a multi-line-signature dělají totéž s argumenty a parametry

Zdroj

Třída TrailingCommaRule, fixtury trailing-comma.

verze: 1.0