Nette Documentation Preview

syntax
System typu
***********

<div class=perex>

System typów jest kluczowy dla rozwoju solidnych aplikacji. Latte wprowadza obsługę typów również do szablonów. Wiedząc, jaki typ danych lub obiektów znajduje się w każdej zmiennej, może

- IDE do poprawnego szeptania (patrz [integracja |recipes#Editors-and-IDE])
- analiza statyczna w celu wykrycia błędów

Oba zasadniczo poprawiają jakość i wygodę rozwoju.

</div>

.[note]
Deklarowane typy są informacyjne i Latte nie kontroluje ich w tym czasie.

Jak zacząć używać typów? Utwórz klasę szablonową, np. `CatalogTemplateParameters`, reprezentującą przekazywane parametry, ich typy i ewentualnie wartości domyślne:

```php
class CatalogTemplateParameters
{
	public function __construct(
		public string $langs,
		/** @var ProductEntity[] */
		public array $products,
		public Address $address,
	) {}
}

$latte->render('template.latte', new CatalogTemplateParameters(
	address: $userAddress,
	lang: $settings->getLanguage(),
	products: $entityManager->getRepository('Product')->findAll(),
));
```

Następnie na początku szablonu umieść tag `{templateType}` z pełną nazwą klasy (wraz z przestrzenią nazw). To definiuje, że szablon zawiera zmienne `$langs` i `$products` wraz z ich odpowiednimi typami.
Możesz określić typy zmiennych lokalnych używając znaczników [`{var}` |tags#var-default], `{varType}`, [`{define}` |template-inheritance#Definitions].

Od tego momentu IDE może Ci prawidłowo szeptać.

Jak zaoszczędzić sobie pracy? Jak najprościej napisać klasę z parametrami szablonu lub tagu `{varType}`? Niech je wygenerują.
W tym celu istnieje para znaczników `{templatePrint}` i `{varPrint}`.
Jeśli umieścisz je w szablonie, zamiast zwykłego renderingu, zobaczysz projekt kodu klasy lub listę znaczników `{varType}`. Następnie wystarczy wybrać kod i skopiować go do projektu jednym kliknięciem.


`{templateType}`
----------------
Typy parametrów przekazywanych do szablonu są deklarowane za pomocą klasy:

```latte
{templateType MyApp\CatalogTemplateParameters}
```


`{varType}`
-----------
Jak deklarować typy zmiennych? Aby to zrobić, użyj znaczników `{varType}` dla istniejących zmiennych, lub [`{var}` |tags#var-default]:

```latte
{varType Nette\Security\User $user}
{varType string $lang}
```


`{templatePrint}`
-----------------
Możesz również zlecić wygenerowanie klasy za pomocą znacznika `{templatePrint}` Jeśli umieścisz go na początku szablonu, zobaczysz projekt klasy zamiast normalnego renderingu. Kod może być następnie wybrany i skopiowany do projektu jednym kliknięciem.


`{varPrint}`
------------
Znacznik `{varPrint}` oszczędza czas przy wpisywaniu. Jeśli umieścisz go w szablonie, zobaczysz sugestię tagu `{varType}` dla zmiennych lokalnych zamiast normalnego renderowania. Możesz wtedy po prostu wybrać kod i skopiować go do szablonu jednym kliknięciem.

Sam `{varPrint}` wymienia tylko zmienne lokalne, które nie są parametrami szablonu. Jeśli chcesz wypisać wszystkie zmienne, użyj `{varPrint all}`.

System typu

System typów jest kluczowy dla rozwoju solidnych aplikacji. Latte wprowadza obsługę typów również do szablonów. Wiedząc, jaki typ danych lub obiektów znajduje się w każdej zmiennej, może

  • IDE do poprawnego szeptania (patrz integracja)
  • analiza statyczna w celu wykrycia błędów

Oba zasadniczo poprawiają jakość i wygodę rozwoju.

Deklarowane typy są informacyjne i Latte nie kontroluje ich w tym czasie.

Jak zacząć używać typów? Utwórz klasę szablonową, np. CatalogTemplateParameters, reprezentującą przekazywane parametry, ich typy i ewentualnie wartości domyślne:

class CatalogTemplateParameters
{
	public function __construct(
		public string $langs,
		/** @var ProductEntity[] */
		public array $products,
		public Address $address,
	) {}
}

$latte->render('template.latte', new CatalogTemplateParameters(
	address: $userAddress,
	lang: $settings->getLanguage(),
	products: $entityManager->getRepository('Product')->findAll(),
));

Następnie na początku szablonu umieść tag {templateType} z pełną nazwą klasy (wraz z przestrzenią nazw). To definiuje, że szablon zawiera zmienne $langs i $products wraz z ich odpowiednimi typami. Możesz określić typy zmiennych lokalnych używając znaczników {var}, {varType}, {define}.

Od tego momentu IDE może Ci prawidłowo szeptać.

Jak zaoszczędzić sobie pracy? Jak najprościej napisać klasę z parametrami szablonu lub tagu {varType}? Niech je wygenerują. W tym celu istnieje para znaczników {templatePrint} i {varPrint}. Jeśli umieścisz je w szablonie, zamiast zwykłego renderingu, zobaczysz projekt kodu klasy lub listę znaczników {varType}. Następnie wystarczy wybrać kod i skopiować go do projektu jednym kliknięciem.

{templateType}

Typy parametrów przekazywanych do szablonu są deklarowane za pomocą klasy:

{templateType MyApp\CatalogTemplateParameters}

{varType}

Jak deklarować typy zmiennych? Aby to zrobić, użyj znaczników {varType} dla istniejących zmiennych, lub {var}:

{varType Nette\Security\User $user}
{varType string $lang}

{templatePrint}

Możesz również zlecić wygenerowanie klasy za pomocą znacznika {templatePrint} Jeśli umieścisz go na początku szablonu, zobaczysz projekt klasy zamiast normalnego renderingu. Kod może być następnie wybrany i skopiowany do projektu jednym kliknięciem.

{varPrint}

Znacznik {varPrint} oszczędza czas przy wpisywaniu. Jeśli umieścisz go w szablonie, zobaczysz sugestię tagu {varType} dla zmiennych lokalnych zamiast normalnego renderowania. Możesz wtedy po prostu wybrać kod i skopiować go do szablonu jednym kliknięciem.

Sam {varPrint} wymienia tylko zmienne lokalne, które nie są parametrami szablonu. Jeśli chcesz wypisać wszystkie zmienne, użyj {varPrint all}.