Sistema dei Tipi

Il sistema dei tipi è fondamentale per lo sviluppo di applicazioni robuste. Latte porta il supporto dei tipi anche nei template. Sapendo quale tipo di dato o oggetto è presente in ogni variabile,

  • l'IDE può suggerire correttamente (vedi integrazione)
  • l'analisi statica può rilevare errori

Entrambi aumentano significativamente la qualità e la comodità dello sviluppo.

I tipi dichiarati sono informativi e Latte attualmente non li controlla.

Come iniziare a usare i tipi? Create una classe di template, ad es. CatalogTemplateParameters, che rappresenti i parametri passati, i loro tipi e, facoltativamente, i valori predefiniti:

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

Quindi, all'inizio del template, inserite il tag {templateType} con il nome completo della classe (incluso il namespace). Questo definisce che nel template ci sono le variabili $langs e $products con i rispettivi tipi. Potete specificare i tipi delle variabili locali usando i tag {var}, {varType}, {define}.

Da quel momento, l'IDE può suggerire correttamente.

Come risparmiare lavoro? Qual è il modo più semplice per scrivere una classe con i parametri del template o i tag {varType}? Fateli generare. A questo servono i due tag {templatePrint} e {varPrint}. Se li inserite nel template, invece del rendering normale, verrà visualizzata una bozza del codice della classe o un elenco di tag {varType}. Basta quindi selezionare il codice con un clic e copiarlo nel progetto.

{templateType}

Dichiariamo i tipi dei parametri passati al template usando una classe:

{templateType MyApp\CatalogTemplateParameters}

{varType}

Come dichiarare i tipi delle variabili? A questo servono i tag {varType} per le variabili esistenti, o {var}:

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

{templatePrint}

Potete anche far generare la classe usando il tag {templatePrint}. Se lo inserite all'inizio del template, invece del rendering normale, verrà visualizzata una bozza della classe. Basta quindi selezionare il codice con un clic e copiarlo nel progetto.

{varPrint}

Il tag {varPrint} vi farà risparmiare tempo nella scrittura. Se lo inserite nel template, invece del rendering normale, verrà visualizzata una bozza dei tag {varType} per le variabili locali. Basta quindi selezionare il codice con un clic e copiarlo nel template.

{varPrint} da solo elenca solo le variabili locali che non sono parametri del template. Se volete elencare tutte le variabili, usate {varPrint all}.

versione: 3.0