Nette Documentation Preview

syntax
Система от типове
*****************

<div class=perex>

Системата от типове е от съществено значение за разработването на надеждни приложения. Latte въвежда поддръжка на типове в шаблоните. Познаването на типа данни или обект, към който принадлежи всяка променлива, позволява

- IDE правилно изпълнява функцията за автоматично допълване (вж. [интеграция и плъгини |recipes#Editors-and-IDE])
- статичен анализ за откриване на грешки

Две неща, които значително подобряват качеството и използваемостта на разработката.

</div>

.[note]
Декларираните типове са информативни и в момента Latte не ги тества.

Как да започнете да използвате типовете? Създайте клас-шаблон, например `CatalogTemplateParameters`, представящ параметрите, които трябва да бъдат предадени:

```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(),
));
```

След това поставете тага `{templateType}` с пълното име на класа (включително пространството от имена) в началото на шаблона. Това определя, че шаблонът ще съдържа променливите `$langs` и `$products`, включително съответните типове.
Можете също така да зададете типове локални променливи с таговете [`{var}` |tags#var-default], `{varType}` и [`{define}` |template-inheritance#Definitions].

IDE вече може да извършва правилно автоматично попълване.

Как да го поддържаме в работно състояние? Как да напишете клас на шаблона или тагове `{varType}` възможно най-просто? Генерирайте ги.
Точно това прави двойката тагове `{templatePrint}` и `{varPrint}`.
Ако поставите един от тези тагове в шаблон, кодът на класа или шаблона ще бъде показан вместо обичайното визуализиране. След това просто изберете и копирайте кода в проекта си.


`{templateType}`
----------------
Видовете параметри, предавани на шаблона, се декларират с помощта на клас:

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


`{varType}`
-----------
Как да декларираме типовете променливи? За да направите това, използвайте тага `{varType}` за съществуваща променлива или [`{var}` |tags#var-default]:

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


`{templatePrint}`
-----------------
Можете също така да генерирате този клас с помощта на тага `{templatePrint}`. Ако го поставите в началото на шаблона, кодът на класа ще бъде показан вместо нормалния шаблон. След това просто изберете и копирайте кода в проекта си.


`{varPrint}`
------------
Етикетът `{varPrint}` ви спестява време. Ако го поставите в шаблон, той ще показва списъка с тагове `{varType}` вместо нормалното визуализиране. След това просто изберете и копирайте кода в шаблона си.

В `{varPrint}` са изброени локалните променливи, които не са параметри на шаблона. Ако искате да изброите всички променливи, използвайте `{varPrint all}`.

Система от типове

Системата от типове е от съществено значение за разработването на надеждни приложения. Latte въвежда поддръжка на типове в шаблоните. Познаването на типа данни или обект, към който принадлежи всяка променлива, позволява

  • IDE правилно изпълнява функцията за автоматично допълване (вж. интеграция и плъгини)
  • статичен анализ за откриване на грешки

Две неща, които значително подобряват качеството и използваемостта на разработката.

Декларираните типове са информативни и в момента Latte не ги тества.

Как да започнете да използвате типовете? Създайте клас-шаблон, например CatalogTemplateParameters, представящ параметрите, които трябва да бъдат предадени:

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(),
));

След това поставете тага {templateType} с пълното име на класа (включително пространството от имена) в началото на шаблона. Това определя, че шаблонът ще съдържа променливите $langs и $products, включително съответните типове. Можете също така да зададете типове локални променливи с таговете {var}, {varType} и {define}.

IDE вече може да извършва правилно автоматично попълване.

Как да го поддържаме в работно състояние? Как да напишете клас на шаблона или тагове {varType} възможно най-просто? Генерирайте ги. Точно това прави двойката тагове {templatePrint} и {varPrint}. Ако поставите един от тези тагове в шаблон, кодът на класа или шаблона ще бъде показан вместо обичайното визуализиране. След това просто изберете и копирайте кода в проекта си.

{templateType}

Видовете параметри, предавани на шаблона, се декларират с помощта на клас:

{templateType MyApp\CatalogTemplateParameters}

{varType}

Как да декларираме типовете променливи? За да направите това, използвайте тага {varType} за съществуваща променлива или {var}:

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

{templatePrint}

Можете също така да генерирате този клас с помощта на тага {templatePrint}. Ако го поставите в началото на шаблона, кодът на класа ще бъде показан вместо нормалния шаблон. След това просто изберете и копирайте кода в проекта си.

{varPrint}

Етикетът {varPrint} ви спестява време. Ако го поставите в шаблон, той ще показва списъка с тагове {varType} вместо нормалното визуализиране. След това просто изберете и копирайте кода в шаблона си.

В {varPrint} са изброени локалните променливи, които не са параметри на шаблона. Ако искате да изброите всички променливи, използвайте {varPrint all}.