Система от типове
Системата от типове е от съществено значение за разработването на надеждни приложения. Latte въвежда поддръжка на типове в шаблоните. Познаването на типа данни или обект, към който принадлежи всяка променлива, позволява
- IDE правилно изпълнява функцията за автоматично допълване (вж. интеграция и плъгини)
- статичен анализ за откриване на грешки
Две неща, които значително подобряват качеството и използваемостта на разработката.
Декларираните типове са информативни и в момента Latte не ги тества.
Как да започнете да използвате типовете? Създайте клас-шаблон,
например CatalogTemplateParameters
, представящ параметрите, които трябва да
бъдат предадени:
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(),
));
След това поставете тага {templateType}
с пълното име на класа
(включително пространството от имена) в началото на шаблона. Това
определя, че шаблонът ще съдържа променливите $langs
и
$products
, включително съответните типове. Можете също така да
зададете типове локални променливи с таговете {var}
, {varType}
и {define}
.
IDE вече може да извършва правилно автоматично попълване.
Как да го поддържаме в работно състояние? Как да напишете клас на
шаблона или тагове {varType}
възможно най-просто? Генерирайте ги.
Точно това прави двойката тагове {templatePrint}
и {varPrint}
. Ако
поставите един от тези тагове в шаблон, кодът на класа или шаблона ще
бъде показан вместо обичайното визуализиране. След това просто
изберете и копирайте кода в проекта си.
{templateType}
Видовете параметри, предавани на шаблона, се декларират с помощта на клас:
{templateType MyApp\CatalogTemplateParameters}
{varType}
Как да декларираме типовете променливи? За да направите това,
използвайте тага {varType}
за съществуваща променлива или {var}
:
{varType Nette\Security\User $user}
{varType string $lang}
{templatePrint}
Можете също така да генерирате този клас с помощта на тага
{templatePrint}
. Ако го поставите в началото на шаблона, кодът на класа
ще бъде показан вместо нормалния шаблон. След това просто изберете и
копирайте кода в проекта си.
{varPrint}
Етикетът {varPrint}
ви спестява време. Ако го поставите в шаблон,
той ще показва списъка с тагове {varType}
вместо нормалното
визуализиране. След това просто изберете и копирайте кода в
шаблона си.
В {varPrint}
са изброени локалните променливи, които не са
параметри на шаблона. Ако искате да изброите всички променливи,
използвайте {varPrint all}
.