Sistema de tipos
El sistema de tipos es lo principal para el desarrollo de aplicaciones robustas. Latte aporta soporte de tipos a las plantillas. Saber que tipo de dato u objeto es cada variable permite
- IDE autocompletar correctamente (ver integración y plugins)
- análisis estático para detectar errores
Dos puntos que mejoran notablemente la calidad y la comodidad del desarrollo.
Los tipos declarados son informativos y Latte no los comprueba en este momento.
¿Cómo empezar a utilizar los tipos? Cree una clase de plantilla, por ejemplo CatalogTemplateParameters
, que
represente los parámetros pasados:
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(),
));
A continuación, inserte la etiqueta {templateType}
con el nombre completo de la clase (incluyendo el espacio de
nombres) al principio de la plantilla. Esto define que habrá variables $langs
y $products
en la
plantilla incluyendo los tipos correspondientes. También puede especificar los tipos de las variables locales utilizando las
etiquetas {var}
{varType}
y {define}
.
Ahora el IDE puede autocompletar correctamente.
¿Cómo guardar el trabajo? ¿Cómo escribir una clase de plantilla o etiquetas {varType}
lo más fácilmente
posible? Consigue que se generen. Eso es precisamente lo que hacen el par de etiquetas {templatePrint}
y
{varPrint}
. Si colocas una de estas etiquetas en una plantilla, se mostrará el código de la clase o plantilla en
lugar de la representación normal. A continuación, sólo tiene que seleccionar y copiar el código en su proyecto.
{templateType}
Los tipos de parámetros pasados a la plantilla se declaran utilizando class:
{templateType MyApp\CatalogTemplateParameters}
{varType}
¿Cómo declarar tipos de variables? Para ello, utilice la etiqueta {varType}
para una variable existente, o bien
{var}
:
{varType Nette\Security\User $user}
{varType string $lang}
{templatePrint}
También puede generar esta clase utilizando la etiqueta {templatePrint}
. Si la colocas al principio de la
plantilla, aparecerá el código de la clase en lugar de la plantilla normal. A continuación, sólo tiene que seleccionar y
copiar el código en su proyecto.
{varPrint}
La etiqueta {varPrint}
le ahorra tiempo. Si la coloca en una plantilla, aparecerá la lista de etiquetas
{varType}
en lugar de la representación normal. A continuación, sólo tiene que seleccionar y copiar el código en
su plantilla.
{varPrint}
enumera las variables locales que no son parámetros de la plantilla. Si desea listar todas las
variables, utilice {varPrint all}
.