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}
.