Nette Documentation Preview

syntax
Système d'identification
************************

<div class=perex>

Le système de types est un élément essentiel pour le développement d'applications robustes. Latte apporte le support des types aux modèles. Savoir quel type de données ou d'objet est chaque variable permet de

- à l'IDE d'autocompléter correctement (voir [intégration et plugins |recipes#Editors and IDE])
- analyse statique pour détecter les erreurs

Deux points qui améliorent considérablement la qualité et la commodité du développement.

</div>

.[note]
Les types déclarés sont informatifs et Latte ne les vérifie pas pour l'instant.

Comment commencer à utiliser les types ? Créez une classe modèle, par exemple `CatalogTemplateParameters`, représentant les paramètres passés :

```php
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(),
));
```

Insérez ensuite la balise `{templateType}` avec le nom complet de la classe (y compris l'espace de nom) au début du modèle. Cela définit qu'il y a des variables `$langs` et `$products` dans le modèle, y compris les types correspondants.
Vous pouvez également spécifier les types des variables locales en utilisant les balises [`{var}` |tags#var-default], `{varType}` et [`{define}` |template-inheritance#definitions].

L'IDE peut maintenant effectuer une autocomplétion correcte.

Comment sauvegarder le travail ? Comment écrire une classe modèle ou des balises `{varType}` le plus facilement possible ? Les faire générer.
C'est précisément ce que font la paire de balises `{templatePrint}` et `{varPrint}`.
Si vous placez l'une de ces balises dans un modèle, le code de la classe ou du modèle s'affiche au lieu du rendu normal. Il suffit ensuite de sélectionner et de copier le code dans votre projet.


`{templateType}`
----------------
Les types de paramètres passés au modèle sont déclarés à l'aide de la classe :

```latte
{templateType MyApp\CatalogTemplateParameters}
```


`{varType}`
-----------
Comment déclarer les types de variables ? Pour cela, utiliser la balise `{varType}` pour une variable existante, ou bien [`{var}` |tags#var-default]:

```latte
{varType Nette\Security\User $user}
{varType string $lang}
```


`{templatePrint}`
-----------------
Vous pouvez également générer cette classe à l'aide de la balise `{templatePrint}`. Si vous la placez au début du modèle, le code de la classe s'affiche à la place du modèle normal. Il suffit ensuite de sélectionner et de copier le code dans votre projet.


`{varPrint}`
------------
La balise `{varPrint}` vous permet de gagner du temps. Si vous la placez dans un modèle, la liste des balises `{varType}` s'affiche au lieu du rendu normal. Il suffit ensuite de sélectionner et de copier le code dans votre modèle.

La balise `{varPrint}` liste les variables locales qui ne sont pas des paramètres du modèle. Si vous voulez lister toutes les variables, utilisez `{varPrint all}`.

Système d'identification

Le système de types est un élément essentiel pour le développement d'applications robustes. Latte apporte le support des types aux modèles. Savoir quel type de données ou d'objet est chaque variable permet de

  • à l'IDE d'autocompléter correctement (voir intégration et plugins)
  • analyse statique pour détecter les erreurs

Deux points qui améliorent considérablement la qualité et la commodité du développement.

Les types déclarés sont informatifs et Latte ne les vérifie pas pour l'instant.

Comment commencer à utiliser les types ? Créez une classe modèle, par exemple CatalogTemplateParameters, représentant les paramètres passés :

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(),
));

Insérez ensuite la balise {templateType} avec le nom complet de la classe (y compris l'espace de nom) au début du modèle. Cela définit qu'il y a des variables $langs et $products dans le modèle, y compris les types correspondants. Vous pouvez également spécifier les types des variables locales en utilisant les balises {var}, {varType} et {define}.

L'IDE peut maintenant effectuer une autocomplétion correcte.

Comment sauvegarder le travail ? Comment écrire une classe modèle ou des balises {varType} le plus facilement possible ? Les faire générer. C'est précisément ce que font la paire de balises {templatePrint} et {varPrint}. Si vous placez l'une de ces balises dans un modèle, le code de la classe ou du modèle s'affiche au lieu du rendu normal. Il suffit ensuite de sélectionner et de copier le code dans votre projet.

{templateType}

Les types de paramètres passés au modèle sont déclarés à l'aide de la classe :

{templateType MyApp\CatalogTemplateParameters}

{varType}

Comment déclarer les types de variables ? Pour cela, utiliser la balise {varType} pour une variable existante, ou bien {var}:

{varType Nette\Security\User $user}
{varType string $lang}

{templatePrint}

Vous pouvez également générer cette classe à l'aide de la balise {templatePrint}. Si vous la placez au début du modèle, le code de la classe s'affiche à la place du modèle normal. Il suffit ensuite de sélectionner et de copier le code dans votre projet.

{varPrint}

La balise {varPrint} vous permet de gagner du temps. Si vous la placez dans un modèle, la liste des balises {varType} s'affiche au lieu du rendu normal. Il suffit ensuite de sélectionner et de copier le code dans votre modèle.

La balise {varPrint} liste les variables locales qui ne sont pas des paramètres du modèle. Si vous voulez lister toutes les variables, utilisez {varPrint all}.