Nette Documentation Preview

syntax
Glossaire des termes
********************


AJAX .[#toc-ajax]
-----------------
Asynchronous JavaScript and XML - technologie de communication client-serveur via le protocole HTTP sans qu'il soit nécessaire de recharger la page entière à chaque demande. Malgré l'acronyme, le format [JSON |#JSON] est souvent utilisé à la place de XML.


Action du présentateur .[#toc-presenter-action]
-----------------------------------------------
Partie logique du [présentateur |#presenter], qui exécute une action, comme l'affichage d'une page de produit, la déconnexion d'un utilisateur, etc. Un présentateur peut avoir plusieurs actions.


BOM
---
Le *masque d'ordre des octets* est un premier caractère spécial d'un fichier et indique l'ordre des octets dans l'encodage. Certains éditeurs l'incluent automatiquement, il est pratiquement invisible, mais il cause des problèmes avec les en-têtes et l'envoi de sortie depuis PHP. Vous pouvez utiliser [Code Checker |code-checker:] pour le supprimer en masse.


Contrôleur .[#toc-controller]
-----------------------------
Le contrôleur traite les demandes de l'utilisateur et sur la base de celles-ci, il appelle une logique d'application particulière (c'est-à-dire [le modèle |#model]), puis il appelle la [vue |#view] pour le rendu des données. Les [présentateurs de |#presenter] Nette Framework sont des analogues des contrôleurs.


Cross-Site Scripting (XSS) .[#toc-cross-site-scripting-xss]
-----------------------------------------------------------
Le Cross-Site Scripting est une méthode de perturbation des sites utilisant des entrées non codées. Un attaquant peut injecter son propre code HTML ou JavaScript et modifier l'apparence de la page, voire recueillir des informations sensibles sur les utilisateurs. La protection contre le XSS est simple : l'échappement cohérent et correct de toutes les chaînes et entrées.

Nette Framework propose une toute nouvelle technologie d'[échappement en fonction du contexte |latte:safety-first#context-aware-escaping], qui vous permettra de vous débarrasser définitivement des risques liés aux scripts intersites. Il échappe automatiquement toutes les entrées en fonction d'un contexte donné, de sorte qu'il est impossible pour un codeur d'oublier accidentellement quelque chose.


Falsification de requête intersite (CSRF) .[#toc-cross-site-request-forgery-csrf]
---------------------------------------------------------------------------------
Une attaque de type Cross-Site Request Forgery consiste pour l'attaquant à inciter la victime à visiter une page qui exécute silencieusement une requête dans le navigateur de la victime vers le serveur où la victime est actuellement connectée, et le serveur croit que la requête a été faite par la victime à son gré. Le serveur exécute une certaine action sous l'identité de la victime mais sans que celle-ci s'en rende compte. Il peut s'agir de modifier ou de supprimer des données, d'envoyer un message, etc.

Nette Framework **protège automatiquement les formulaires et les signaux des présentateurs** de ce type d'attaque. Cela se fait en empêchant qu'ils soient envoyés ou appelés depuis un autre domaine.


Injection de dépendances .[#toc-dependency-injection]
-----------------------------------------------------
L'injection de dépendances (DI) est un modèle de conception qui vous indique comment séparer la création d'objets de leurs dépendances. Autrement dit, une classe n'est pas responsable de la création ou de l'initialisation de ses dépendances, mais ces dépendances sont fournies par du code externe (qui peut inclure un [conteneur DI |#Dependency Injection container]). L'avantage est que cela permet une plus grande flexibilité du code, une meilleure lisibilité et des tests d'application plus faciles car les dépendances sont facilement remplaçables et isolées des autres parties du code. Pour plus d'informations, voir [Qu'est-ce que l'injection de dépendances ? |dependency-injection:introduction]


Conteneur d'injection de dépendances .[#toc-dependency-injection-container]
---------------------------------------------------------------------------
Un conteneur d'injection de dépendances (également appelé conteneur DI ou conteneur IoC) est un outil qui gère la création et la gestion des dépendances dans une application (ou des [services |#service]). Un conteneur possède généralement une configuration qui définit les classes qui dépendent d'autres classes, les implémentations de dépendances spécifiques à utiliser et la manière de créer ces dépendances. Le conteneur crée ensuite ces objets et les fournit aux classes qui en ont besoin. Pour plus d'informations, voir [Qu'est-ce qu'un conteneur DI ? |dependency-injection:container]


Échapper à .[#toc-escaping]
---------------------------
L'échappement est la conversion des caractères ayant une signification particulière dans un contexte donné en une autre séquence équivalente. Exemple : Nous voulons écrire des guillemets dans une chaîne entre guillemets. Comme les guillemets ont une signification particulière dans le contexte de la chaîne entre guillemets, il est nécessaire d'utiliser une autre séquence équivalente. La séquence concrète est déterminée par les règles du contexte (par exemple, `\"` dans la chaîne entre guillemets de PHP, `"` dans les attributs HTML, etc.)


Filtre (anciennement Helper) .[#toc-filter-formerly-helper]
-----------------------------------------------------------
Fonction de filtrage. Dans les modèles, le [filtre |latte:syntax#filters] est une fonction qui aide à modifier ou à formater les données dans le formulaire de sortie. Les modèles ont plusieurs [filtres standard |latte:filters] prédéfinis.


Invalidation .[#toc-invalidation]
---------------------------------
Avis d'un [snippet |#snippet] à rendre à nouveau. Dans d'autres contextes, il s'agit également de l'effacement d'un cache.


JSON .[#toc-json]
-----------------
Format d'échange de données basé sur la syntaxe JavaScript (c'est son sous-ensemble). La spécification exacte se trouve sur www.json.org.


Composant .[#toc-component]
---------------------------
Partie réutilisable d'une application. Il peut s'agir d'une partie visuelle d'une page, comme décrit dans le chapitre [application:components], ou le terme peut également désigner la classe [Component |component-model:] (un tel composant ne doit pas nécessairement être visuel).


Caractères de contrôle .[#toc-control-characters]
-------------------------------------------------
Les caractères de contrôle sont des caractères invisibles, qui peuvent apparaître dans un texte et éventuellement causer des problèmes. Pour les supprimer en masse des fichiers, vous pouvez utiliser [Code Checker |code-checker:], pour les supprimer d'une variable, utilisez la fonction [Strings::normalize() |utils:strings#normalize].


Événements .[#toc-events]
-------------------------
Un événement est une situation attendue dans l'objet qui, lorsqu'elle se produit, appelle ce que l'on appelle les "handlers", c'est-à-dire les callbacks qui réagissent à l'événement ("sample":https://gist.github.com/dg/332cdd51bdf7d66a6d8003b134508a38). L'événement peut être, par exemple, la soumission d'un formulaire, la connexion d'un utilisateur, etc. Les événements sont donc une forme d'"inversion de contrôle".

Par exemple, une connexion utilisateur se produit dans la méthode `Nette\Security\User::login()`. L'objet `User` possède une variable publique `$onLoggedIn`, qui est un tableau auquel chacun peut ajouter une fonction de rappel. Dès que l'utilisateur se connecte, la méthode `login()` appelle toutes les callbacks du tableau. Le nom d'une variable sous la forme `onXyz` est une convention utilisée dans tout Nette.


Latte .[#toc-latte]
-------------------
L'un des [systèmes de création de modèles |latte:] les plus innovants qui soient.


Modèle .[#toc-model]
--------------------
Le modèle représente les données et les fonctions de base de l'ensemble de l'application. Il comprend toute la logique de l'application (parfois aussi appelée "logique métier"). C'est le **M** de **M**VC ou MPV. Toute action de l'utilisateur (connexion, mise au panier, modification d'une valeur de la base de données) représente une action du modèle.

Le modèle gère son état interne et fournit une interface publique. En appelant cette interface, nous pouvons prendre ou changer son état. Le modèle ne connaît pas l'existence de la [vue |#view] ou du [contrôleur |#controller], le modèle est totalement indépendant d'eux.


Modèle-Vue-Contrôleur .[#toc-model-view-controller]
---------------------------------------------------
Architecture logicielle, apparue dans le développement d'applications GUI pour séparer le code de contrôle du flux ([contrôleur |#controller]) du code de la logique applicative ([modèle |#model]) et du code de rendu des données ([vue |#view]). De cette façon, le code est plus compréhensible, le développement futur est facilité et il est possible de tester séparément les différentes parties.


Modèle-Vue-Présentateur .[#toc-model-view-presenter]
----------------------------------------------------
Architecture basée sur le [Modèle-Vue-Contrôleur |#Model-View-Controller].


Module .[#toc-module]
---------------------
Le [module |application:modules] dans Nette Framework représente une collection de présentateurs et de modèles, éventuellement aussi des composants et des modèles, qui servent des données à un présentateur. Il s'agit donc d'une partie logique certaine d'une application.

Par exemple, une boutique en ligne peut avoir trois modules :
1) Catalogue de produits avec panier.
2) Administration pour le client.
3) Administration pour le commerçant.


Espace de nommage .[#toc-namespace]
-----------------------------------
L'espace de noms est une fonctionnalité du langage PHP depuis sa version 5.3 et de certains autres langages de programmation. Il permet d'éviter les collisions de noms (par exemple, deux classes avec le même nom) lors de l'utilisation conjointe de différentes bibliothèques. Consultez la [documentation de PHP |https://www.php.net/manual/en/language.namespaces.rationale.php] pour plus de détails.


Présentateur .[#toc-presenter]
------------------------------
Le Presenter est un objet qui prend la [requête |api:Nette\Application\Request] traduite par le routeur à partir de la requête HTTP et génère une [réponse |api:Nette\Application\Response]. La réponse peut être une page HTML, une image, un document XML, un fichier, JSON, une redirection ou tout autre élément auquel vous pensez.

Par présentateur, on entend généralement un descendant de la classe [api:Nette\Application\UI\Presenter]. Par demande, il exécute les [actions |application:presenters#life-cycle-of-presenter] appropriées et rend les modèles.


Routeur .[#toc-router]
----------------------
Traducteur bidirectionnel entre la demande HTTP / URL et l'action du présentateur. Bi-directionnel signifie qu'il est non seulement possible de dériver une [action du présentateur |#presenter action] à partir de la demande HTTP, mais aussi de générer l'URL appropriée pour une action. Pour en savoir plus, consultez le chapitre sur le [routage des URL |application:routing].


Cookie SameSite .[#toc-samesite-cookie]
---------------------------------------
Les cookies SameSite fournissent un mécanisme permettant de reconnaître ce qui a conduit au chargement de la page. Il peut avoir trois valeurs : `Lax`, `Strict` et `None` (cette dernière nécessite HTTPS). Si la demande de la page provient directement du site ou si l'utilisateur ouvre la page en la tapant directement dans la barre d'adresse ou en cliquant sur un signet, le navigateur envoie tous les cookies au serveur (c'est-à-dire avec les drapeaux `Lax`, `Strict` et `None`). Si l'utilisateur clique sur le site via un lien provenant d'un autre site, les cookies avec les drapeaux `Lax` et `None` sont transmis au serveur. Si la demande est effectuée par d'autres moyens, comme l'envoi d'un formulaire POST à partir d'un autre site, le chargement à l'intérieur d'une iframe, l'utilisation de JavaScript, etc., seuls les cookies avec le drapeau `None` sont envoyés.


Service .[#toc-service]
-----------------------
Dans le contexte de l'injection de dépendances, un service fait référence à un objet qui est créé et géré par un conteneur DI. Un service peut facilement être remplacé par une autre implémentation, par exemple à des fins de test ou pour changer le comportement d'une application, sans avoir à modifier le code qui utilise le service.


Extrait .[#toc-snippet]
-----------------------
Extrait d'une page, qui peut être rendu séparément lors d'une requête [AJAX |#AJAX].


Voir .[#toc-view]
-----------------
La vue est une couche de l'application qui est responsable du rendu des résultats de la demande. Habituellement, elle utilise un système de templating et sait comment rendre ses composants ou les résultats pris dans le modèle.



{{leftbar: www:@menu-common}}
{{priority: -2}}

Glossaire des termes

AJAX

Asynchronous JavaScript and XML – technologie de communication client-serveur via le protocole HTTP sans qu'il soit nécessaire de recharger la page entière à chaque demande. Malgré l'acronyme, le format JSON est souvent utilisé à la place de XML.

Action du présentateur

Partie logique du présentateur, qui exécute une action, comme l'affichage d'une page de produit, la déconnexion d'un utilisateur, etc. Un présentateur peut avoir plusieurs actions.

BOM

Le masque d'ordre des octets est un premier caractère spécial d'un fichier et indique l'ordre des octets dans l'encodage. Certains éditeurs l'incluent automatiquement, il est pratiquement invisible, mais il cause des problèmes avec les en-têtes et l'envoi de sortie depuis PHP. Vous pouvez utiliser Code Checker pour le supprimer en masse.

Contrôleur

Le contrôleur traite les demandes de l'utilisateur et sur la base de celles-ci, il appelle une logique d'application particulière (c'est-à-dire le modèle), puis il appelle la vue pour le rendu des données. Les présentateurs de Nette Framework sont des analogues des contrôleurs.

Cross-Site Scripting (XSS)

Le Cross-Site Scripting est une méthode de perturbation des sites utilisant des entrées non codées. Un attaquant peut injecter son propre code HTML ou JavaScript et modifier l'apparence de la page, voire recueillir des informations sensibles sur les utilisateurs. La protection contre le XSS est simple : l'échappement cohérent et correct de toutes les chaînes et entrées.

Nette Framework propose une toute nouvelle technologie d'échappement en fonction du contexte, qui vous permettra de vous débarrasser définitivement des risques liés aux scripts intersites. Il échappe automatiquement toutes les entrées en fonction d'un contexte donné, de sorte qu'il est impossible pour un codeur d'oublier accidentellement quelque chose.

Falsification de requête intersite (CSRF)

Une attaque de type Cross-Site Request Forgery consiste pour l'attaquant à inciter la victime à visiter une page qui exécute silencieusement une requête dans le navigateur de la victime vers le serveur où la victime est actuellement connectée, et le serveur croit que la requête a été faite par la victime à son gré. Le serveur exécute une certaine action sous l'identité de la victime mais sans que celle-ci s'en rende compte. Il peut s'agir de modifier ou de supprimer des données, d'envoyer un message, etc.

Nette Framework protège automatiquement les formulaires et les signaux des présentateurs de ce type d'attaque. Cela se fait en empêchant qu'ils soient envoyés ou appelés depuis un autre domaine.

Injection de dépendances

L'injection de dépendances (DI) est un modèle de conception qui vous indique comment séparer la création d'objets de leurs dépendances. Autrement dit, une classe n'est pas responsable de la création ou de l'initialisation de ses dépendances, mais ces dépendances sont fournies par du code externe (qui peut inclure un conteneur DI). L'avantage est que cela permet une plus grande flexibilité du code, une meilleure lisibilité et des tests d'application plus faciles car les dépendances sont facilement remplaçables et isolées des autres parties du code. Pour plus d'informations, voir Qu'est-ce que l'injection de dépendances ?

Conteneur d'injection de dépendances

Un conteneur d'injection de dépendances (également appelé conteneur DI ou conteneur IoC) est un outil qui gère la création et la gestion des dépendances dans une application (ou des services). Un conteneur possède généralement une configuration qui définit les classes qui dépendent d'autres classes, les implémentations de dépendances spécifiques à utiliser et la manière de créer ces dépendances. Le conteneur crée ensuite ces objets et les fournit aux classes qui en ont besoin. Pour plus d'informations, voir Qu'est-ce qu'un conteneur DI ?

Échapper à

L'échappement est la conversion des caractères ayant une signification particulière dans un contexte donné en une autre séquence équivalente. Exemple : Nous voulons écrire des guillemets dans une chaîne entre guillemets. Comme les guillemets ont une signification particulière dans le contexte de la chaîne entre guillemets, il est nécessaire d'utiliser une autre séquence équivalente. La séquence concrète est déterminée par les règles du contexte (par exemple, \" dans la chaîne entre guillemets de PHP, " dans les attributs HTML, etc.)

Filtre (anciennement Helper)

Fonction de filtrage. Dans les modèles, le filtre est une fonction qui aide à modifier ou à formater les données dans le formulaire de sortie. Les modèles ont plusieurs filtres standard prédéfinis.

Invalidation

Avis d'un snippet à rendre à nouveau. Dans d'autres contextes, il s'agit également de l'effacement d'un cache.

JSON

Format d'échange de données basé sur la syntaxe JavaScript (c'est son sous-ensemble). La spécification exacte se trouve sur www.json.org.

Composant

Partie réutilisable d'une application. Il peut s'agir d'une partie visuelle d'une page, comme décrit dans le chapitre components, ou le terme peut également désigner la classe Component (un tel composant ne doit pas nécessairement être visuel).

Caractères de contrôle

Les caractères de contrôle sont des caractères invisibles, qui peuvent apparaître dans un texte et éventuellement causer des problèmes. Pour les supprimer en masse des fichiers, vous pouvez utiliser Code Checker, pour les supprimer d'une variable, utilisez la fonction Strings::normalize().

Événements

Un événement est une situation attendue dans l'objet qui, lorsqu'elle se produit, appelle ce que l'on appelle les „handlers“, c'est-à-dire les callbacks qui réagissent à l'événement (sample). L'événement peut être, par exemple, la soumission d'un formulaire, la connexion d'un utilisateur, etc. Les événements sont donc une forme d'„inversion de contrôle“.

Par exemple, une connexion utilisateur se produit dans la méthode Nette\Security\User::login(). L'objet User possède une variable publique $onLoggedIn, qui est un tableau auquel chacun peut ajouter une fonction de rappel. Dès que l'utilisateur se connecte, la méthode login() appelle toutes les callbacks du tableau. Le nom d'une variable sous la forme onXyz est une convention utilisée dans tout Nette.

Latte

L'un des systèmes de création de modèles les plus innovants qui soient.

Modèle

Le modèle représente les données et les fonctions de base de l'ensemble de l'application. Il comprend toute la logique de l'application (parfois aussi appelée „logique métier“). C'est le M de MVC ou MPV. Toute action de l'utilisateur (connexion, mise au panier, modification d'une valeur de la base de données) représente une action du modèle.

Le modèle gère son état interne et fournit une interface publique. En appelant cette interface, nous pouvons prendre ou changer son état. Le modèle ne connaît pas l'existence de la vue ou du contrôleur, le modèle est totalement indépendant d'eux.

Modèle-Vue-Contrôleur

Architecture logicielle, apparue dans le développement d'applications GUI pour séparer le code de contrôle du flux (contrôleur) du code de la logique applicative (modèle) et du code de rendu des données (vue). De cette façon, le code est plus compréhensible, le développement futur est facilité et il est possible de tester séparément les différentes parties.

Modèle-Vue-Présentateur

Architecture basée sur le Modèle-Vue-Contrôleur.

Module

Le module dans Nette Framework représente une collection de présentateurs et de modèles, éventuellement aussi des composants et des modèles, qui servent des données à un présentateur. Il s'agit donc d'une partie logique certaine d'une application.

Par exemple, une boutique en ligne peut avoir trois modules :

  1. Catalogue de produits avec panier.
  2. Administration pour le client.
  3. Administration pour le commerçant.

Espace de nommage

L'espace de noms est une fonctionnalité du langage PHP depuis sa version 5.3 et de certains autres langages de programmation. Il permet d'éviter les collisions de noms (par exemple, deux classes avec le même nom) lors de l'utilisation conjointe de différentes bibliothèques. Consultez la documentation de PHP pour plus de détails.

Présentateur

Le Presenter est un objet qui prend la requête traduite par le routeur à partir de la requête HTTP et génère une réponse. La réponse peut être une page HTML, une image, un document XML, un fichier, JSON, une redirection ou tout autre élément auquel vous pensez.

Par présentateur, on entend généralement un descendant de la classe Nette\Application\UI\Presenter. Par demande, il exécute les actions appropriées et rend les modèles.

Routeur

Traducteur bidirectionnel entre la demande HTTP / URL et l'action du présentateur. Bi-directionnel signifie qu'il est non seulement possible de dériver une action du présentateur à partir de la demande HTTP, mais aussi de générer l'URL appropriée pour une action. Pour en savoir plus, consultez le chapitre sur le routage des URL.

Les cookies SameSite fournissent un mécanisme permettant de reconnaître ce qui a conduit au chargement de la page. Il peut avoir trois valeurs : Lax, Strict et None (cette dernière nécessite HTTPS). Si la demande de la page provient directement du site ou si l'utilisateur ouvre la page en la tapant directement dans la barre d'adresse ou en cliquant sur un signet, le navigateur envoie tous les cookies au serveur (c'est-à-dire avec les drapeaux Lax, Strict et None). Si l'utilisateur clique sur le site via un lien provenant d'un autre site, les cookies avec les drapeaux Lax et None sont transmis au serveur. Si la demande est effectuée par d'autres moyens, comme l'envoi d'un formulaire POST à partir d'un autre site, le chargement à l'intérieur d'une iframe, l'utilisation de JavaScript, etc., seuls les cookies avec le drapeau None sont envoyés.

Service

Dans le contexte de l'injection de dépendances, un service fait référence à un objet qui est créé et géré par un conteneur DI. Un service peut facilement être remplacé par une autre implémentation, par exemple à des fins de test ou pour changer le comportement d'une application, sans avoir à modifier le code qui utilise le service.

Extrait

Extrait d'une page, qui peut être rendu séparément lors d'une requête AJAX.

Voir

La vue est une couche de l'application qui est responsable du rendu des résultats de la demande. Habituellement, elle utilise un système de templating et sait comment rendre ses composants ou les résultats pris dans le modèle.