Nette Documentation Preview

syntax
Sistema de tipos
****************

<div class=perex>

El sistema de tipos es crucial para desarrollar aplicaciones robustas. Latte también aporta soporte de tipos a las plantillas. Gracias a saber qué tipo de dato u objeto hay en cada variable, puede

- el IDE sugerir correctamente (ver [integración |recipes#Editores e IDE])
- el análisis estático detectar errores

Ambos aumentan significativamente la calidad y la comodidad del desarrollo.

</div>

.[note]
Los tipos declarados son informativos y Latte no los verifica en este momento.

¿Cómo empezar a usar tipos? Cree una clase de plantilla, por ejemplo, `CatalogTemplateParameters`, que represente los parámetros pasados, sus tipos y, opcionalmente, sus valores por defecto:

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

Y luego, al principio de la plantilla, inserte la etiqueta `{templateType}` con el nombre completo de la clase (incluido el namespace). Esto define que en la plantilla existen las variables `$langs` y `$products` con sus tipos correspondientes. Puede indicar los tipos de las variables locales usando las etiquetas [`{var}` |tags#var default], `{varType}`, [`{define}` |template-inheritance#Definiciones define].

A partir de ese momento, su IDE puede sugerir correctamente.

¿Cómo ahorrar trabajo? ¿Cuál es la forma más fácil de escribir una clase con parámetros de plantilla o etiquetas `{varType}`? Haga que se generen. Para eso existen un par de etiquetas `{templatePrint}` y `{varPrint}`. Si las coloca en una plantilla, en lugar de la renderización normal, se mostrará una propuesta de código de clase o una lista de etiquetas `{varType}`. Luego, simplemente puede seleccionar el código con un clic y copiarlo a su proyecto.


`{templateType}`
----------------
Los tipos de los parámetros pasados a la plantilla se declaran mediante una clase:

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


`{varType}`
-----------
¿Cómo declarar los tipos de las variables? Para ello sirven las etiquetas `{varType}` para variables existentes, o [`{var}` |tags#var default]:

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


`{templatePrint}`
-----------------
También puede hacer que la clase se genere usando la etiqueta `{templatePrint}`. Si la coloca al principio de la plantilla, en lugar de la renderización normal, se mostrará una propuesta de clase. Luego, simplemente puede seleccionar el código con un clic y copiarlo a su proyecto.


`{varPrint}`
------------
La etiqueta `{varPrint}` le ahorrará tiempo de escritura. Si la coloca en la plantilla, en lugar de la renderización normal, se mostrará una propuesta de etiquetas `{varType}` para las variables locales. Luego, simplemente puede seleccionar el código con un clic y copiarlo a la plantilla.

`{varPrint}` por sí solo solo imprime variables locales que no son parámetros de plantilla. Si desea imprimir todas las variables, use `{varPrint all}`.

Sistema de tipos

El sistema de tipos es crucial para desarrollar aplicaciones robustas. Latte también aporta soporte de tipos a las plantillas. Gracias a saber qué tipo de dato u objeto hay en cada variable, puede

  • el IDE sugerir correctamente (ver integración)
  • el análisis estático detectar errores

Ambos aumentan significativamente la calidad y la comodidad del desarrollo.

Los tipos declarados son informativos y Latte no los verifica en este momento.

¿Cómo empezar a usar tipos? Cree una clase de plantilla, por ejemplo, CatalogTemplateParameters, que represente los parámetros pasados, sus tipos y, opcionalmente, sus valores por defecto:

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

Y luego, al principio de la plantilla, inserte la etiqueta {templateType} con el nombre completo de la clase (incluido el namespace). Esto define que en la plantilla existen las variables $langs y $products con sus tipos correspondientes. Puede indicar los tipos de las variables locales usando las etiquetas {var}, {varType}, {define}.

A partir de ese momento, su IDE puede sugerir correctamente.

¿Cómo ahorrar trabajo? ¿Cuál es la forma más fácil de escribir una clase con parámetros de plantilla o etiquetas {varType}? Haga que se generen. Para eso existen un par de etiquetas {templatePrint} y {varPrint}. Si las coloca en una plantilla, en lugar de la renderización normal, se mostrará una propuesta de código de clase o una lista de etiquetas {varType}. Luego, simplemente puede seleccionar el código con un clic y copiarlo a su proyecto.

{templateType}

Los tipos de los parámetros pasados a la plantilla se declaran mediante una clase:

{templateType MyApp\CatalogTemplateParameters}

{varType}

¿Cómo declarar los tipos de las variables? Para ello sirven las etiquetas {varType} para variables existentes, o {var}:

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

{templatePrint}

También puede hacer que la clase se genere usando la etiqueta {templatePrint}. Si la coloca al principio de la plantilla, en lugar de la renderización normal, se mostrará una propuesta de clase. Luego, simplemente puede seleccionar el código con un clic y copiarlo a su proyecto.

{varPrint}

La etiqueta {varPrint} le ahorrará tiempo de escritura. Si la coloca en la plantilla, en lugar de la renderización normal, se mostrará una propuesta de etiquetas {varType} para las variables locales. Luego, simplemente puede seleccionar el código con un clic y copiarlo a la plantilla.

{varPrint} por sí solo solo imprime variables locales que no son parámetros de plantilla. Si desea imprimir todas las variables, use {varPrint all}.