Nette Documentation Preview

syntax
declaration-blank-lines
***********************

.[perex]
Mezi metodami jsou dva prázdné řádky, mezi vlastnostmi a konstantami nejvýš jeden, za otevírací závorkou třídy a před zavírací žádný a dokumentační komentář se drží své deklarace.

Opravuje · v presetech `dresscode/per`, `dresscode/psr12`, `dresscode/nette` · pokrývá `no_blank_lines_after_class_opening`, `no_blank_lines_after_phpdoc`, `NetteCodingStandard.WhiteSpace.FunctionSpacing`, `SlevomatCodingStandard.Attributes.AttributeAndTargetSpacing`, `SlevomatCodingStandard.Classes.ConstantSpacing`, `SlevomatCodingStandard.Classes.EmptyLinesAroundClassBraces`, `SlevomatCodingStandard.Classes.PropertySpacing`, `SlevomatCodingStandard.Classes.TraitUseSpacing`, `Squiz.WhiteSpace.FunctionSpacing` .[rule-info]


Co pravidlo hlídá
=================

Prázdné řádky mezi deklaracemi jsou to, co dělá třídu čitelnou na první pohled: metody od sebe oddělené výrazně, vlastnosti a konstanty pohromadě, komentář přilepený k tomu, co popisuje. Pravidlo má pro každé takové místo volbu: mezi funkcemi a metodami, v rozhraní zvlášť, před první a za poslední metodou třídy, za otevírací a před zavírací závorkou, kolem `use` traitů, mezi vlastnostmi, konstantami a případy výčtu, před dokumentovaným členem a mezi dokumentačním komentářem či atributem a deklarací.

Každá volba je počet prázdných řádků, rozsah `[min, max]` s otevřeným koncem jako `null`, nebo `null`, které místo nechá na pokoji. Rozsah se hodí tam, kde chcete připustit dvojí zápis: `betweenMembers: [0, 1]` dovolí vlastnosti psát těsně pod sebe i oddělené jedním řádkem, ale dva už ne. Počet mimo rozsah pravidlo posune k nejbližší mezi.

Výchozí hodnoty jsou styl dvou prázdných řádků mezi metodami. Preset `dresscode/psr12` nastavuje `betweenFunctions`, `betweenFunctionsInInterface`, `betweenMembers`, `beforeDocumentedMember` a `afterPhpdoc` na `null`, protože PSR-12 o počtu řádků mezi metodami nic neříká.


Příklad
=======

```php .[before]
class Cart
{

	private array $items = [];  // Expected 0 blank lines before the property, 1 found
	public function add(Item $item): void  // Expected 2 blank lines before the method, 0 found
	{
		$this->items[] = $item;
	}

	public function total(): int  // Expected 2 blank lines before the method, 1 found
	{
		return array_sum($this->items);
	}
}
```

```php .[after]
class Cart
{
	private array $items = [];


	public function add(Item $item): void
	{
		$this->items[] = $item;
	}


	public function total(): int
	{
		return array_sum($this->items);
	}
}
```


Volby
=====


betweenFunctions .[option]
--------------------------

Počet, rozsah nebo `null`, výchozí `2`. Před funkcí nebo metodou a za ní; první a poslední metoda třídy se řídí volbami `beforeFirst` a `afterLast`. Platí i pro funkce deklarované mimo třídu.

```neon
rules:
	dresscode/declaration-blank-lines:
		betweenFunctions: 1
```

```php .[before]
class Cart
{
	public function add(Item $item): void
	{
	}


	public function total(): int  // Expected 1 blank line before the method, 2 found
	{
	}
}
```

```php .[after]
class Cart
{
	public function add(Item $item): void
	{
	}

	public function total(): int
	{
	}
}
```


betweenFunctionsInInterface .[option]
-------------------------------------

Počet, rozsah nebo `null`, výchozí `1`. Mezi metodami rozhraní, které nemají tělo, a stačí jim proto menší odstup.

```neon
rules:
	dresscode/declaration-blank-lines:
		betweenFunctionsInInterface: 0
```

```php .[before]
interface Storage
{
	public function read(string $key): mixed;

	public function write(string $key, mixed $value): void;  // Expected 0 blank lines before the method, 1 found
}
```

```php .[after]
interface Storage
{
	public function read(string $key): mixed;
	public function write(string $key, mixed $value): void;
}
```


beforeFirst .[option]
---------------------

Počet, rozsah nebo `null`, výchozí `0`. Před metodou, která je prvním členem třídy.

```neon
rules:
	dresscode/declaration-blank-lines:
		beforeFirst: 1
```

```php .[before]
class Cart
{
	public function add(Item $item): void  // Expected 1 blank line before the method, 0 found
	{
	}
}
```

```php .[after]
class Cart
{

	public function add(Item $item): void
	{
	}
}
```


afterLast .[option]
-------------------

Počet, rozsah nebo `null`, výchozí `0`. Za metodou, která je posledním členem třídy.

```neon
rules:
	dresscode/declaration-blank-lines:
		afterLast: 1
```

```php .[before]
class Cart
{
	public function add(Item $item): void
	{
	}
}  // Expected 1 blank line after the method, 0 found
```

```php .[after]
class Cart
{
	public function add(Item $item): void
	{
	}

}
```


afterOpeningBrace .[option]
---------------------------

Počet, rozsah nebo `null`, výchozí `0`. Před prvním členem třídy, pokud to není metoda; pak platí `beforeFirst`.

```neon
rules:
	dresscode/declaration-blank-lines:
		afterOpeningBrace: 1
```

```php .[before]
class Cart
{
	private array $items = [];  // Expected 1 blank line before the property, 0 found
}
```

```php .[after]
class Cart
{

	private array $items = [];
}
```


beforeClosingBrace .[option]
----------------------------

Počet, rozsah nebo `null`, výchozí `0`. Za posledním členem třídy, pokud to není metoda; pak platí `afterLast`.

```neon
rules:
	dresscode/declaration-blank-lines:
		beforeClosingBrace: 1
```

```php .[before]
class Cart
{
	private array $items = [];
}  // Expected 1 blank line before the closing brace, 0 found
```

```php .[after]
class Cart
{
	private array $items = [];

}
```


betweenTraitUses .[option]
--------------------------

Počet, rozsah nebo `null`, výchozí `0`. Mezi `use` traitů na začátku třídy.

```php .[before]
class Cart
{
	use Countable;

	use Serializable;  // Expected 0 blank lines before the trait use, 1 found
}
```

```php .[after]
class Cart
{
	use Countable;
	use Serializable;
}
```


afterTraitUses .[option]
------------------------

Počet, rozsah nebo `null`, výchozí `1`. Před členem, který následuje za `use` traitů, pokud to není metoda; pak platí `betweenFunctions`.

```php .[before]
class Cart
{
	use Countable;
	private array $items = [];  // Expected 1 blank line before the property, 0 found
}
```

```php .[after]
class Cart
{
	use Countable;

	private array $items = [];
}
```


betweenMembers .[option]
------------------------

Počet, rozsah nebo `null`, výchozí `[0, 1]`. Mezi vlastnostmi, konstantami a případy výčtu bez dokumentačního komentáře a atributu. Výchozí rozsah dovolí členy psát těsně pod sebe i oddělené jedním řádkem.

```php .[before]
class Cart
{
	private array $items = [];
	private int $count = 0;


	private ?Customer $customer = null;  // Expected at most 1 blank line before the property, 2 found
}
```

```php .[after]
class Cart
{
	private array $items = [];
	private int $count = 0;

	private ?Customer $customer = null;
}
```

S pevným počtem musí být odstup všude stejný:

```neon
rules:
	dresscode/declaration-blank-lines:
		betweenMembers: 1
```

```php .[before]
class Cart
{
	private array $items = [];
	private int $count = 0;  // Expected 1 blank line before the property, 0 found
}
```

```php .[after]
class Cart
{
	private array $items = [];

	private int $count = 0;
}
```


beforeDocumentedMember .[option]
--------------------------------

Počet, rozsah nebo `null`, výchozí `1`. Před vlastností, konstantou nebo případem výčtu, který má dokumentační komentář nebo atribut; komentář potřebuje odstup od předchozího člena, aby bylo vidět, ke kterému patří.

```php .[before]
class Cart
{
	private array $items = [];
	/** @var int<0, max> */
	private int $count = 0;  // Expected 1 blank line before the property, 0 found
}
```

```php .[after]
class Cart
{
	private array $items = [];

	/** @var int<0, max> */
	private int $count = 0;
}
```


afterPhpdoc .[option]
---------------------

Počet, rozsah nebo `null`, výchozí `0`. Mezi dokumentačním komentářem nebo atributem a deklarací, ke které patří.

```php .[before]
class Cart
{
	/**
	 * Adds an item.
	 */

	public function add(Item $item): void  // Expected 0 blank lines after the doc comment, 1 found
	{
	}
}
```

```php .[after]
class Cart
{
	/**
	 * Adds an item.
	 */
	public function add(Item $item): void
	{
	}
}
```


Související pravidla
====================

- `header-blank-lines` prázdné řádky v hlavičce souboru kolem `declare`, `namespace` a importů
- `body-blank-lines` prázdný řádek za otevírací závorkou těla funkce nebo řídicí struktury
- `statement-blank-lines` prázdné řádky kolem příkazů jako `return`


Zdroj
=====

Třída "DeclarationBlankLinesRule":https://github.com/dg/dresscode/blob/master/src/DressCode/Rules/Whitespace/DeclarationBlankLinesRule.php, fixtury "declaration-blank-lines":https://github.com/dg/dresscode/tree/master/tests/DressCode/Rules/fixtures/declaration-blank-lines.

declaration-blank-lines

Mezi metodami jsou dva prázdné řádky, mezi vlastnostmi a konstantami nejvýš jeden, za otevírací závorkou třídy a před zavírací žádný a dokumentační komentář se drží své deklarace.

Opravuje · v presetech dresscode/per, dresscode/psr12, dresscode/nette · pokrývá no_blank_lines_after_class_opening, no_blank_lines_after_phpdoc, NetteCodingStandard.WhiteSpace.FunctionSpacing, SlevomatCodingStandard.Attributes.AttributeAndTargetSpacing, SlevomatCodingStandard.Classes.ConstantSpacing, SlevomatCodingStandard.Classes.EmptyLinesAroundClassBraces, SlevomatCodingStandard.Classes.PropertySpacing, SlevomatCodingStandard.Classes.TraitUseSpacingSquiz.WhiteSpace.FunctionSpacing

Co pravidlo hlídá

Prázdné řádky mezi deklaracemi jsou to, co dělá třídu čitelnou na první pohled: metody od sebe oddělené výrazně, vlastnosti a konstanty pohromadě, komentář přilepený k tomu, co popisuje. Pravidlo má pro každé takové místo volbu: mezi funkcemi a metodami, v rozhraní zvlášť, před první a za poslední metodou třídy, za otevírací a před zavírací závorkou, kolem use traitů, mezi vlastnostmi, konstantami a případy výčtu, před dokumentovaným členem a mezi dokumentačním komentářem či atributem a deklarací.

Každá volba je počet prázdných řádků, rozsah [min, max] s otevřeným koncem jako null, nebo null, které místo nechá na pokoji. Rozsah se hodí tam, kde chcete připustit dvojí zápis: betweenMembers: [0, 1] dovolí vlastnosti psát těsně pod sebe i oddělené jedním řádkem, ale dva už ne. Počet mimo rozsah pravidlo posune k nejbližší mezi.

Výchozí hodnoty jsou styl dvou prázdných řádků mezi metodami. Preset dresscode/psr12 nastavuje betweenFunctions, betweenFunctionsInInterface, betweenMembers, beforeDocumentedMember a afterPhpdoc na null, protože PSR-12 o počtu řádků mezi metodami nic neříká.

Příklad

class Cart
{

	private array $items = [];  // Expected 0 blank lines before the property, 1 found
	public function add(Item $item): void  // Expected 2 blank lines before the method, 0 found
	{
		$this->items[] = $item;
	}

	public function total(): int  // Expected 2 blank lines before the method, 1 found
	{
		return array_sum($this->items);
	}
}
class Cart
{
	private array $items = [];


	public function add(Item $item): void
	{
		$this->items[] = $item;
	}


	public function total(): int
	{
		return array_sum($this->items);
	}
}

Volby

betweenFunctions

Počet, rozsah nebo null, výchozí 2. Před funkcí nebo metodou a za ní; první a poslední metoda třídy se řídí volbami beforeFirst a afterLast. Platí i pro funkce deklarované mimo třídu.

rules:
	dresscode/declaration-blank-lines:
		betweenFunctions: 1
class Cart
{
	public function add(Item $item): void
	{
	}


	public function total(): int  // Expected 1 blank line before the method, 2 found
	{
	}
}
class Cart
{
	public function add(Item $item): void
	{
	}

	public function total(): int
	{
	}
}

betweenFunctionsInInterface

Počet, rozsah nebo null, výchozí 1. Mezi metodami rozhraní, které nemají tělo, a stačí jim proto menší odstup.

rules:
	dresscode/declaration-blank-lines:
		betweenFunctionsInInterface: 0
interface Storage
{
	public function read(string $key): mixed;

	public function write(string $key, mixed $value): void;  // Expected 0 blank lines before the method, 1 found
}
interface Storage
{
	public function read(string $key): mixed;
	public function write(string $key, mixed $value): void;
}

beforeFirst

Počet, rozsah nebo null, výchozí 0. Před metodou, která je prvním členem třídy.

rules:
	dresscode/declaration-blank-lines:
		beforeFirst: 1
class Cart
{
	public function add(Item $item): void  // Expected 1 blank line before the method, 0 found
	{
	}
}
class Cart
{

	public function add(Item $item): void
	{
	}
}

afterLast

Počet, rozsah nebo null, výchozí 0. Za metodou, která je posledním členem třídy.

rules:
	dresscode/declaration-blank-lines:
		afterLast: 1
class Cart
{
	public function add(Item $item): void
	{
	}
}  // Expected 1 blank line after the method, 0 found
class Cart
{
	public function add(Item $item): void
	{
	}

}

afterOpeningBrace

Počet, rozsah nebo null, výchozí 0. Před prvním členem třídy, pokud to není metoda; pak platí beforeFirst.

rules:
	dresscode/declaration-blank-lines:
		afterOpeningBrace: 1
class Cart
{
	private array $items = [];  // Expected 1 blank line before the property, 0 found
}
class Cart
{

	private array $items = [];
}

beforeClosingBrace

Počet, rozsah nebo null, výchozí 0. Za posledním členem třídy, pokud to není metoda; pak platí afterLast.

rules:
	dresscode/declaration-blank-lines:
		beforeClosingBrace: 1
class Cart
{
	private array $items = [];
}  // Expected 1 blank line before the closing brace, 0 found
class Cart
{
	private array $items = [];

}

betweenTraitUses

Počet, rozsah nebo null, výchozí 0. Mezi use traitů na začátku třídy.

class Cart
{
	use Countable;

	use Serializable;  // Expected 0 blank lines before the trait use, 1 found
}
class Cart
{
	use Countable;
	use Serializable;
}

afterTraitUses

Počet, rozsah nebo null, výchozí 1. Před členem, který následuje za use traitů, pokud to není metoda; pak platí betweenFunctions.

class Cart
{
	use Countable;
	private array $items = [];  // Expected 1 blank line before the property, 0 found
}
class Cart
{
	use Countable;

	private array $items = [];
}

betweenMembers

Počet, rozsah nebo null, výchozí [0, 1]. Mezi vlastnostmi, konstantami a případy výčtu bez dokumentačního komentáře a atributu. Výchozí rozsah dovolí členy psát těsně pod sebe i oddělené jedním řádkem.

class Cart
{
	private array $items = [];
	private int $count = 0;


	private ?Customer $customer = null;  // Expected at most 1 blank line before the property, 2 found
}
class Cart
{
	private array $items = [];
	private int $count = 0;

	private ?Customer $customer = null;
}

S pevným počtem musí být odstup všude stejný:

rules:
	dresscode/declaration-blank-lines:
		betweenMembers: 1
class Cart
{
	private array $items = [];
	private int $count = 0;  // Expected 1 blank line before the property, 0 found
}
class Cart
{
	private array $items = [];

	private int $count = 0;
}

beforeDocumentedMember

Počet, rozsah nebo null, výchozí 1. Před vlastností, konstantou nebo případem výčtu, který má dokumentační komentář nebo atribut; komentář potřebuje odstup od předchozího člena, aby bylo vidět, ke kterému patří.

class Cart
{
	private array $items = [];
	/** @var int<0, max> */
	private int $count = 0;  // Expected 1 blank line before the property, 0 found
}
class Cart
{
	private array $items = [];

	/** @var int<0, max> */
	private int $count = 0;
}

afterPhpdoc

Počet, rozsah nebo null, výchozí 0. Mezi dokumentačním komentářem nebo atributem a deklarací, ke které patří.

class Cart
{
	/**
	 * Adds an item.
	 */

	public function add(Item $item): void  // Expected 0 blank lines after the doc comment, 1 found
	{
	}
}
class Cart
{
	/**
	 * Adds an item.
	 */
	public function add(Item $item): void
	{
	}
}

Související pravidla

  • header-blank-lines prázdné řádky v hlavičce souboru kolem declare, namespace a importů
  • body-blank-lines prázdný řádek za otevírací závorkou těla funkce nebo řídicí struktury
  • statement-blank-lines prázdné řádky kolem příkazů jako return

Zdroj

Třída DeclarationBlankLinesRule, fixtury declaration-blank-lines.