line-length
Řádek delší než limit se ohlásí; opravit ho pravidlo neumí.
Jen hlásí · v žádném presetu · pokrývá Generic.Files.LineLength,
SlevomatCodingStandard.Files.LineLength
Co pravidlo hlídá
Změří každý řádek souboru a ohlásí ty, které přesahují limit. Šířka se počítá tak, jak řádek vidíte: tabulátor v odsazení platí za šířku tabulátoru podle stylu, ne za jeden znak. Neměří se, co je obsahem a nedá se zalomit bez změny významu: řádky uvnitř heredocu a víceřádkového řetězce a markup mimo PHP tagy. Dlouhý řádek uvnitř víceřádkového komentáře se hlásí na řádku, kde komentář začíná.
Pravidlo běží jako poslední, až po pravidlech, která umějí dlouhé řádky zalomit (multi-line-call,
multi-line-condition, multi-line-array a další). Co ohlásí, je tedy to, co nic zalomit nedokázalo,
a zbývá to na vás: rozdělit výraz, pojmenovat mezivýsledek, zkrátit řetězec.
Příklad
Limit je tu snížený, aby se příklad vešel na stránku; výchozí je 120 znaků.
rules:
dresscode/line-length:
limit: 60
use Some\Very\Long\Vendor\Namespace\WithAnEvenLonger\ClassName;
$message = sprintf('%s has %d unread messages', $user->name, $count); // The line is 69 characters long, the limit is 60
$greeting = 'Hello';
Import je delší než limit, ale nehlásí se: nejde rozdělit na víc řádků a volba ignoreImports ho
vynechává.
Volby
limit
int, výchozí 120. Největší povolená šířka řádku ve znacích.
rules:
dresscode/line-length:
limit: 80
$title = $translator->translate('order.confirmation.subject', ['number' => $order->id]); // The line is 88 characters long, the limit is 80
ignoreImports
bool, výchozí true. Řádek s use se nehlásí, protože import nejde zalomit.
rules:
dresscode/line-length:
limit: 60
ignoreImports: false
use Some\Very\Long\Vendor\Namespace\WithAnEvenLonger\ClassName; // The line is 63 characters long, the limit is 60
ignorePatterns
Seznam řetězců, výchozí []. Regulární výrazy; řádek, kterému některý odpovídá, se nehlásí. Hodí
se pro řádky s URL nebo pro tabulky dat, které by zalomením ztratily čitelnost.
rules:
dresscode/line-length:
limit: 60
ignorePatterns: ['~https?://~']
$docs = 'https://example.com/documentation/very/long/path/to/the/page';
$data = ['alpha' => 1, 'beta' => 2, 'gamma' => 3, 'delta' => 4]; // The line is 64 characters long, the limit is 60
Zdroj
Třída LineLengthRule, fixtury line-length.