Système de types
Le système de types est crucial pour le développement d'applications robustes. Latte apporte également la prise en charge des types dans les templates. Grâce au fait que nous savons quel type de données ou d'objet se trouve dans chaque variable,
- l'IDE peut correctement suggérer (voir intégration)
- l'analyse statique peut détecter les erreurs
Les deux augmentent considérablement la qualité et le confort du développement.
Les types déclarés sont informatifs et Latte ne les vérifie pas pour le moment.
Comment commencer à utiliser les types ? Créez une classe de template, par exemple CatalogTemplateParameters
,
représentant les paramètres passés, leurs types et éventuellement leurs valeurs par défaut :
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(),
));
Ensuite, au début du template, insérez la balise {templateType}
avec le nom complet de la classe (y compris le
namespace). Cela définit que les variables $langs
et $products
existent dans le template, y compris
leurs types respectifs. Vous pouvez spécifier les types des variables locales à l'aide des balises {var}
, {varType}
, {define}
.
À partir de ce moment, l'IDE peut correctement vous faire des suggestions.
Comment économiser du travail ? Quelle est la manière la plus simple d'écrire une classe avec des paramètres de template ou
des balises {varType}
? Laissez-les être générés. C'est à cela que servent les deux balises
{templatePrint}
et {varPrint}
. Si vous les placez dans un template, au lieu du rendu normal, une
proposition de code de classe ou une liste de balises {varType}
s'affichera. Il suffit ensuite de sélectionner le
code d'un clic et de le copier dans votre projet.
{templateType}
Nous déclarons les types des paramètres passés au template à l'aide d'une classe :
{templateType MyApp\CatalogTemplateParameters}
{varType}
Comment déclarer les types de variables ? Pour cela, utilisez les balises {varType}
pour les variables
existantes, ou {var}
:
{varType Nette\Security\User $user}
{varType string $lang}
{templatePrint}
Vous pouvez également faire générer la classe à l'aide de la balise {templatePrint}
. Si vous la placez au
début du template, au lieu du rendu normal, une proposition de classe s'affichera. Il suffit ensuite de sélectionner le code
d'un clic et de le copier dans votre projet.
{varPrint}
La balise {varPrint}
vous fera gagner du temps d'écriture. Si vous la placez dans le template, au lieu du rendu
normal, une proposition de balises {varType}
pour les variables locales s'affichera. Il suffit ensuite de
sélectionner le code d'un clic et de le copier dans le template.
{varPrint}
seul n'affiche que les variables locales qui ne sont pas des paramètres de template. Si vous souhaitez
afficher toutes les variables, utilisez {varPrint all}
.