Nette Documentation Preview

syntax
trailing-comma
**************

.[perex]
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` .[rule-info]


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
=======

```php .[before]
$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
```

```php .[after]
$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 .[option]
-------------------

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í.

```neon
rules:
	dresscode/trailing-comma:
		multiLine: [arrays, arguments, parameters]
```

```php .[before]
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
}
```

```php .[after]
function send(
	string $to,
	string $subject,
): void {
	mail(
		$to,
		$subject,
	);
}
```


singleLine .[option]
--------------------

`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.

```neon
rules:
	dresscode/trailing-comma:
		singleLine: false
```

```php .[before]
$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":https://github.com/dg/dresscode/blob/master/src/DressCode/Rules/Arrays/TrailingCommaRule.php, fixtury "trailing-comma":https://github.com/dg/dresscode/tree/master/tests/DressCode/Rules/fixtures/trailing-comma.

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.