Typový systém
Typový systém je klíčový pro vývoj robustních aplikací. Latte přináší podporou typů i do šablon. Díky tomu, že víme, jaký datový či objektový typ je v každé proměnné, může
- IDE správně našeptávat (viz integrace)
- statická analýza odhalit chyby
Obojí zásadním způsobem zvyšuje kvalitu a pohodlí vývoje.
Deklarované typy jsou informativní a Latte je v tuto chvíli nekontroluje.
Jak začít používat typy? Vytvořte si třídu šablony, např. CatalogTemplateParameters, reprezentující
předávané parametry, jejich typy a případně i výchozí hodnoty:
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(),
));
A dále na začátek šablony vložte značku {templateType} s plným názvem třídy (včetně namespace). To
definuje, že v šabloně jsou proměnné $langs a $products včetně příslušných typů. Typy
lokálních proměnných můžete uvést pomocí značek {var}, {varType}, {define}.
Od té chvíle vám může IDE správně našeptávat.
Jak si ušetřit práci? Jak co nejsnáze napsat třídu s parametry šablony nebo značky {varType}? Nechte si
je vygenerovat. Od toho existuje dvojice značek {templatePrint} a {varPrint}. Pokud je umístíte do
šablony, místo běžného vykreslení se zobrazí návrh kódu třídy resp. seznam značek {varType}. Kód pak
stačí jedním kliknutím označit a zkopírovat do projektu.
{templateType}
Typy parametrů předávaných do šablony deklarujeme pomocí třídy:
{templateType MyApp\CatalogTemplateParameters}
{varType}
Jak deklarovat typy proměnných? K tomu slouží značky {varType} pro existující proměnné, nebo {var}:
{varType Nette\Security\User $user}
{varType string $lang}
{templatePrint}
Třídu si také můžete nechat vygenerovat pomocí značky {templatePrint}. Pokud ji umístíte na začátek
šablony, místo běžného vykreslení se zobrazí návrh třídy. Kód pak stačí jedním kliknutím označit a zkopírovat do
projektu.
{varPrint}
Značka {varPrint} vám ušetří čas se psaním. Pokud ji umístíte do šablony, místo běžného vykreslení
se zobrazí návrh značek {varType} pro lokální proměnné. Kód pak stačí jedním kliknutím označit a
zkopírovat do šablony.
Samotné {varPrint} vypisuje pouze lokální proměnné, které nejsou parametry šablony. Pokud chcete vypsat
všechny proměnné, použijte {varPrint all}.