Tipo Sistema
O sistema de tipo é a coisa principal para o desenvolvimento de aplicações robustas. O Latte traz suporte de tipo para os modelos. Para saber quais dados ou tipo de objeto cada variável permite
- IDE para autocompletar corretamente (ver integração e plugins)
- análise estática para detectar erros
Dois pontos que melhoram significativamente a qualidade e a conveniência do desenvolvimento.
Os tipos declarados são informativos e o Latte não os verifica neste momento.
Como começar a usar os tipos? Crie uma classe modelo, por exemplo CatalogTemplateParameters
, representando os
parâmetros passados:
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(),
));
Em seguida, insira a tag {templateType}
com o nome completo da classe (incluindo o espaço de nomes) no início
do modelo. Isto define que há variáveis $langs
e $products
no modelo, incluindo os tipos
correspondentes. Você também pode especificar os tipos de variáveis locais usando tags {var}
, {varType}
e {define}
.
Agora a IDE pode se autocompletar corretamente.
Como salvar o trabalho? Como escrever um modelo de classe ou etiquetas {varType}
o mais facilmente possível?
Faça com que sejam geradas. É exatamente isso que fazem os pares de tags {templatePrint}
e {varPrint}
.
Se você colocar uma dessas tags em um modelo, o código de classe ou modelo será exibido ao invés da renderização normal.
Então, basta selecionar e copiar o código em seu projeto.
{templateType}
Os tipos de parâmetros passados para o modelo são declarados usando classe:
{templateType MyApp\CatalogTemplateParameters}
{varType}
Como declarar os tipos de variáveis? Para este propósito, use a tag {varType}
para uma variável existente, ou
{var}
:
{varType Nette\Security\User $user}
{varType string $lang}
{templatePrint}
Você também pode gerar esta classe usando a tag {templatePrint}
. Se você colocá-la no início do modelo,
o código de classe é exibido ao invés do modelo normal. Em seguida, basta selecionar e copiar o código em seu projeto.
{varPrint}
A tag {varPrint}
economiza seu tempo. Se você colocá-la em um modelo, a lista de tags {varType}
é
exibida ao invés da renderização normal. Em seguida, basta selecionar e copiar o código em seu modelo.
O {varPrint}
lista variáveis locais que não são parâmetros de modelo. Se você quiser listar todas as
variáveis, use {varPrint all}
.