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.LogicalOperatorSpacing, Squiz.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-spacingmezery kolem tečkyunary-operator-spacingžádná mezera mezi unárním operátorem a operandemternary-operator-spacingmezery kolem?a:
Zdroj
Třída BinaryOperatorSpacingRule, fixtury binary-operator-spacing.