Система типів
Система типів – це головне для розробки надійних додатків. 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}
.