Typový systém
Typový systém je základním kamenem pro vývoj robustních aplikací. Latte přináší podporu typů i do šablon. Díky znalosti datových či objektových typů každé proměnné můžeme dosáhnout:
- Přesného našeptávání v IDE (viz integrace)
- Odhalení chyb pomocí statické analýzy
Tyto funkce výrazně zvyšují kvalitu kódu a usnadňují vývojový proces.
Je důležité poznamenat, že deklarované typy jsou v současné době pouze informativní a Latte je aktivně nekontroluje.
Jak implementovat typový systém? Začněte vytvořením třídy reprezentující parametry šablony, například
CatalogTemplateParameters
. Tato třída definuje 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(),
));
Následně na začátek šablony umístěte značku {templateType}
s plně kvalifikovaným názvem třídy
(včetně namespace). Tím definujete, že v šabloně jsou k dispozici proměnné $langs
a $products
s příslušnými typy. Pro lokální proměnné můžete typy specifikovat pomocí značek {var}
, {varType}
, nebo {define}
.
Tyto kroky umožní vašemu IDE poskytovat přesné našeptávání.
Pro usnadnění práce s typovým systémem Latte nabízí nástroje pro automatické generování kódu:
{templatePrint}
generuje návrh třídy s parametry šablony{varPrint}
vytváří seznam značek{varType}
pro lokální proměnné
Tyto značky při použití v šabloně zobrazí návrh kódu místo běžného vykreslení. Vygenerovaný kód lze pak jednoduše zkopírovat do vašeho projektu nebo šablony.
{templateType}
Pro deklaraci typů parametrů předávaných do šablony použijte třídu následujícím způsobem:
{templateType MyApp\CatalogTemplateParameters}
{varType}
Pro deklaraci typů existujících proměnných použijte {varType}
, pro nové proměnné {var}
:
{varType Nette\Security\User $user}
{varType string $lang}
{templatePrint}
Pro automatické generování třídy parametrů šablony použijte {templatePrint}
na začátku šablony. Místo
běžného vykreslení se zobrazí návrh třídy, který můžete jednoduše zkopírovat do svého 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}
.
Implementace typového systému v Latte významně přispívá k vytváření robustnějších a lépe udržovatelných šablon, což vede k celkovému zlepšení kvality vašich aplikací.