Nette Documentation Preview

syntax
Tipo Sistema
************

<div class=perex>

O sistema de tipo é a coisa principal para o desenvolvimento de aplicações robustas. O Latte traz suporte de tipo para os modelos. Para saber quais dados ou tipo de objeto cada variável permite

- IDE para autocompletar corretamente (ver [integração e plugins |recipes#Editors and IDE])
- análise estática para detectar erros

Dois pontos que melhoram significativamente a qualidade e a conveniência do desenvolvimento.

</div>

.[note]
Os tipos declarados são informativos e o Latte não os verifica neste momento.

Como começar a usar os tipos? Crie uma classe modelo, por exemplo `CatalogTemplateParameters`, representando os parâmetros passados:

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

Em seguida, insira a tag `{templateType}` com o nome completo da classe (incluindo o espaço de nomes) no início do modelo. Isto define que há variáveis `$langs` e `$products` no modelo, incluindo os tipos correspondentes.
Você também pode especificar os tipos de variáveis locais usando tags [`{var}` |tags#var-default], `{varType}` e [`{define}` |template-inheritance#definitions].

Agora a IDE pode se autocompletar corretamente.

Como salvar o trabalho? Como escrever um modelo de classe ou etiquetas `{varType}` o mais facilmente possível? Faça com que sejam geradas.
É exatamente isso que fazem os pares de tags `{templatePrint}` e `{varPrint}`.
Se você colocar uma dessas tags em um modelo, o código de classe ou modelo será exibido ao invés da renderização normal. Então, basta selecionar e copiar o código em seu projeto.


`{templateType}`
----------------
Os tipos de parâmetros passados para o modelo são declarados usando classe:

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


`{varType}`
-----------
Como declarar os tipos de variáveis? Para este propósito, use a tag `{varType}` para uma variável existente, ou [`{var}` |tags#var-default]:

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


`{templatePrint}`
-----------------
Você também pode gerar esta classe usando a tag `{templatePrint}`. Se você colocá-la no início do modelo, o código de classe é exibido ao invés do modelo normal. Em seguida, basta selecionar e copiar o código em seu projeto.


`{varPrint}`
------------
A tag `{varPrint}` economiza seu tempo. Se você colocá-la em um modelo, a lista de tags `{varType}` é exibida ao invés da renderização normal. Em seguida, basta selecionar e copiar o código em seu modelo.

O `{varPrint}` lista variáveis locais que não são parâmetros de modelo. Se você quiser listar todas as variáveis, use `{varPrint all}`.

Tipo Sistema

O sistema de tipo é a coisa principal para o desenvolvimento de aplicações robustas. O Latte traz suporte de tipo para os modelos. Para saber quais dados ou tipo de objeto cada variável permite

Dois pontos que melhoram significativamente a qualidade e a conveniência do desenvolvimento.

Os tipos declarados são informativos e o Latte não os verifica neste momento.

Como começar a usar os tipos? Crie uma classe modelo, por exemplo CatalogTemplateParameters, representando os parâmetros passados:

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

Em seguida, insira a tag {templateType} com o nome completo da classe (incluindo o espaço de nomes) no início do modelo. Isto define que há variáveis $langs e $products no modelo, incluindo os tipos correspondentes. Você também pode especificar os tipos de variáveis locais usando tags {var}, {varType} e {define}.

Agora a IDE pode se autocompletar corretamente.

Como salvar o trabalho? Como escrever um modelo de classe ou etiquetas {varType} o mais facilmente possível? Faça com que sejam geradas. É exatamente isso que fazem os pares de tags {templatePrint} e {varPrint}. Se você colocar uma dessas tags em um modelo, o código de classe ou modelo será exibido ao invés da renderização normal. Então, basta selecionar e copiar o código em seu projeto.

{templateType}

Os tipos de parâmetros passados para o modelo são declarados usando classe:

{templateType MyApp\CatalogTemplateParameters}

{varType}

Como declarar os tipos de variáveis? Para este propósito, use a tag {varType} para uma variável existente, ou {var}:

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

{templatePrint}

Você também pode gerar esta classe usando a tag {templatePrint}. Se você colocá-la no início do modelo, o código de classe é exibido ao invés do modelo normal. Em seguida, basta selecionar e copiar o código em seu projeto.

{varPrint}

A tag {varPrint} economiza seu tempo. Se você colocá-la em um modelo, a lista de tags {varType} é exibida ao invés da renderização normal. Em seguida, basta selecionar e copiar o código em seu modelo.

O {varPrint} lista variáveis locais que não são parâmetros de modelo. Se você quiser listar todas as variáveis, use {varPrint all}.