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