binary-operator-spacing

Kolem binárního operátoru, přiřazení, instanceof, => a = výchozí hodnoty je z každé strany aspoň jedna mezera, nebo přesně jedna.

Opravuje · v presetech dresscode/per, dresscode/psr12, dresscode/nette · pokrývá binary_operator_spaces, Squiz.WhiteSpace.LogicalOperatorSpacingSquiz.WhiteSpace.OperatorSpacing

Co pravidlo hlídá

$a+1 se čte hůř než $a + 1 a $a=1 vypadá jako překlep. Pravidlo se stará o mezery kolem aritmetických, porovnávacích, logických a bitových operátorů, kolem ??, kolem všech přiřazení včetně += a ??=, kolem instanceof, kolem => v poli, match i arrow funkci a kolem = u výchozí hodnoty parametru, vlastnosti nebo konstanty. Tečka pro spojování řetězců má vlastní pravidlo concat-spacing, protože o ní se styly rozcházejí; = v declare(strict_types=1) patří pravidlu declare-spacing.

Ve výchozím nastavení stačí aspoň jedna mezera: kdo si zarovnává přiřazení nebo hodnoty v poli pod sebe, o zarovnání nepřijde. Volba spacing umí vyžadovat přesně jednu mezeru a tabAlignment povolit zarovnání tabulátorem. Operátor na začátku nebo na konci řádku se nehlídá; o rozlomení výrazu přes řádky se starají pravidla multi-line-*.

Příklad

$total=$price*$count;  // At least one space before the = operator // At least one space after the = operator // At least one space before the * operator // At least one space after the * operator
$label = $count>1 ? 'items' : 'item';  // At least one space before the > operator // At least one space after the > operator
$map = ['a'=>1, 'b' => 2];  // At least one space before the double arrow // At least one space after the double arrow
$aligned   = 1;
$alsoFine  = 2;
$total = $price * $count;
$label = $count > 1 ? 'items' : 'item';
$map = ['a' => 1, 'b' => 2];
$aligned   = 1;
$alsoFine  = 2;

Poslední dva řádky zůstaly, jak byly: víc mezer než jedna výchozí nastavení dovoluje.

Volby

spacing

atLeastSingle nebo single, výchozí atLeastSingle. S atLeastSingle zůstanou mezery navíc, které zarovnávají přiřazení nebo položky pole pod sebe; single je stáhne na jednu.

rules:
	dresscode/binary-operator-spacing:
		spacing: single
$aligned   = 1;  // A single space before the = operator
$alsoFine  = 2;  // A single space before the = operator
$aligned = 1;
$alsoFine = 2;

tabAlignment

bool, výchozí false. S true zůstane i mezera tvořená tabulátorem, která zarovnává sloupce, a to i s spacing: single.

rules:
	dresscode/binary-operator-spacing:
		spacing: single
		tabAlignment: true
$short	= 1;
$longerName	= 2;
$spaced   = 3;  // A single space before the = operator
$short	= 1;
$longerName	= 2;
$spaced = 3;

Související pravidla

  • concat-spacing mezery kolem tečky
  • unary-operator-spacing žádná mezera mezi unárním operátorem a operandem
  • ternary-operator-spacing mezery kolem ? a :

Zdroj

Třída BinaryOperatorSpacingRule, fixtury binary-operator-spacing.

verze: 1.0