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

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ř. CatalogTemplate, reprezentující předávané parametry:

class CatalogTemplate
{
	/** @var array */
	public $langs;

	/** @var ProductEntity[] */
	public $products;
}

$params = new CatalogTemplate;
$params->langs = $settings->getLanguages();
$params->products = $entityManager->getRepository('Product')->findAll();
$latte->render('template.latte', $params);

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\CatalogTemplate}

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

Vylepšit tuto stránku