Nette Documentation Preview

syntax
Sistema di tipizzazione
***********************

<div class=perex>

Il sistema di tipi è l'elemento principale per lo sviluppo di applicazioni robuste. Latte offre il supporto dei tipi ai modelli. Conoscere il tipo di dato o di oggetto di ciascuna variabile permette di

- all'IDE di completare correttamente l'autocompletamento (vedere [integrazione e plugin |recipes#Editors and IDE])
- analisi statica per rilevare gli errori

Due punti che migliorano significativamente la qualità e la convenienza dello sviluppo.

</div>

.[note]
I tipi dichiarati sono informativi e Latte non li controlla in questo momento.

Come iniziare a usare i tipi? Creare una classe modello, ad esempio `CatalogTemplateParameters`, che rappresenti i parametri passati:

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

Inserire quindi il tag `{templateType}` con il nome completo della classe (incluso lo spazio dei nomi) all'inizio del template. Questo definisce che ci sono variabili `$langs` e `$products` nel template, compresi i tipi corrispondenti.
Si possono anche specificare i tipi di variabili locali usando i tag [`{var}` |tags#var-default], `{varType}` e [`{define}` |template-inheritance#definitions].

Ora l'IDE è in grado di effettuare correttamente il completamento automatico.

Come salvare il lavoro? Come scrivere una classe template o i tag di `{varType}` nel modo più semplice possibile? Generarli.
Questo è esattamente ciò che fa la coppia di tag `{templatePrint}` e `{varPrint}`.
Se si inserisce uno di questi tag in un modello, il codice della classe o del modello viene visualizzato invece del normale rendering. È sufficiente selezionare e copiare il codice nel progetto.


`{templateType}`
----------------
I tipi di parametri passati al template sono dichiarati usando la classe:

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


`{varType}`
-----------
Come dichiarare i tipi di variabili? A questo scopo, utilizzare il tag `{varType}` per una variabile esistente, oppure [`{var}` |tags#var-default]:

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


`{templatePrint}`
-----------------
È possibile generare questa classe anche utilizzando il tag `{templatePrint}`. Se lo si posiziona all'inizio del template, il codice della classe viene visualizzato al posto del template normale. È sufficiente selezionare e copiare il codice nel progetto.


`{varPrint}`
------------
Il tag `{varPrint}` consente di risparmiare tempo. Se lo si inserisce in un modello, viene visualizzato l'elenco dei tag `{varType}` invece del normale rendering. È sufficiente selezionare e copiare il codice nel modello.

Il tag `{varPrint}` elenca le variabili locali che non sono parametri del template. Se si desidera elencare tutte le variabili, usare `{varPrint all}`.

Sistema di tipizzazione

Il sistema di tipi è l'elemento principale per lo sviluppo di applicazioni robuste. Latte offre il supporto dei tipi ai modelli. Conoscere il tipo di dato o di oggetto di ciascuna variabile permette di

  • all'IDE di completare correttamente l'autocompletamento (vedere integrazione e plugin)
  • analisi statica per rilevare gli errori

Due punti che migliorano significativamente la qualità e la convenienza dello sviluppo.

I tipi dichiarati sono informativi e Latte non li controlla in questo momento.

Come iniziare a usare i tipi? Creare una classe modello, ad esempio CatalogTemplateParameters, che rappresenti i parametri passati:

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

Inserire quindi il tag {templateType} con il nome completo della classe (incluso lo spazio dei nomi) all'inizio del template. Questo definisce che ci sono variabili $langs e $products nel template, compresi i tipi corrispondenti. Si possono anche specificare i tipi di variabili locali usando i tag {var}, {varType} e {define}.

Ora l'IDE è in grado di effettuare correttamente il completamento automatico.

Come salvare il lavoro? Come scrivere una classe template o i tag di {varType} nel modo più semplice possibile? Generarli. Questo è esattamente ciò che fa la coppia di tag {templatePrint} e {varPrint}. Se si inserisce uno di questi tag in un modello, il codice della classe o del modello viene visualizzato invece del normale rendering. È sufficiente selezionare e copiare il codice nel progetto.

{templateType}

I tipi di parametri passati al template sono dichiarati usando la classe:

{templateType MyApp\CatalogTemplateParameters}

{varType}

Come dichiarare i tipi di variabili? A questo scopo, utilizzare il tag {varType} per una variabile esistente, oppure {var}:

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

{templatePrint}

È possibile generare questa classe anche utilizzando il tag {templatePrint}. Se lo si posiziona all'inizio del template, il codice della classe viene visualizzato al posto del template normale. È sufficiente selezionare e copiare il codice nel progetto.

{varPrint}

Il tag {varPrint} consente di risparmiare tempo. Se lo si inserisce in un modello, viene visualizzato l'elenco dei tag {varType} invece del normale rendering. È sufficiente selezionare e copiare il codice nel modello.

Il tag {varPrint} elenca le variabili locali che non sono parametri del template. Se si desidera elencare tutte le variabili, usare {varPrint all}.