Система от типове

Системата от типове е от съществено значение за разработването на надеждни приложения. 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}.

версия: 3.0