Glossaire des termes

AJAX

Asynchronous JavaScript and XML – technologie d'échange d'informations entre le client et le serveur via le protocole HTTP sans nécessiter le rechargement complet de la page à chaque requête. Bien que le nom puisse suggérer que les données sont envoyées uniquement au format XML, le format JSON est également couramment utilisé.

Action (presenter)

Partie logique du presenter qui exécute une action. Par exemple, afficher la page d'un produit, déconnecter l'utilisateur, etc. Un presenter peut avoir plusieurs actions.

BOM

Le byte order mark est un caractère spécial au début d'un fichier, utilisé comme indicateur de l'ordre des octets dans l'encodage. Certains éditeurs l'insèrent dans les fichiers. Il est pratiquement invisible, mais cause des problèmes avec l'envoi de la sortie et des en-têtes depuis PHP. Pour une suppression en masse, vous pouvez utiliser Code Checker.

Controller

Contrôleur qui traite les requêtes de l'utilisateur et, sur cette base, appelle la logique applicative appropriée (c'est-à-dire le #modèle) puis demande à la #vue d'afficher les données. L'équivalent des contrôleurs dans Nette Framework sont les presenters.

Cross-Site Scripting (XSS)

Le Cross-Site Scripting est une méthode de violation des pages web exploitant des sorties non traitées. L'attaquant peut alors injecter son propre code dans la page et ainsi la modifier ou même obtenir des données sensibles sur les visiteurs. On ne peut se défendre contre le XSS qu'en traitant de manière cohérente et correcte toutes les chaînes.

Nette Framework introduit une technologie révolutionnaire d'Échappement sensible au contexte, qui vous débarrasse à jamais du risque de Cross-Site Scripting. Il traite automatiquement toutes les sorties, de sorte qu'il est impossible qu'un codeur oublie quelque chose.

Cross-Site Request Forgery (CSRF)

L'attaque Cross-Site Request Forgery consiste pour l'attaquant à attirer la victime sur une page qui exécute discrètement dans le navigateur de la victime une requête vers le serveur sur lequel la victime est connectée, et le serveur croit que la requête a été exécutée par la victime de sa propre volonté. Ainsi, sous l'identité de la victime, il effectue une certaine action sans que celle-ci le sache. 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 dans les presenters contre ce type d'attaque. Et ce, en empêchant leur envoi ou leur déclenchement depuis un autre domaine.

Injection de Dépendances

L'Injection de Dépendances (DI) est un patron de conception qui explique comment séparer la création d'objets de leurs dépendances. C'est-à-dire que la classe n'est pas responsable de la création ou de l'initialisation de ses dépendances, mais que ces dépendances lui sont fournies par du code externe (cela peut aussi être un conteneur DI). L'avantage est qu'il permet une plus grande flexibilité du code, une meilleure compréhension et facilite les tests de l'application, car les dépendances sont facilement remplaçables et isolées des autres parties du code. Plus d'informations dans le chapitre Qu'est-ce que l'Injection de Dépendances ?

Conteneur d'Injection de Dépendances

Le conteneur d'Injection de Dépendances (également conteneur DI ou conteneur IoC) est un outil qui gère la création et la gestion des dépendances dans l'application (ou services). Le conteneur a généralement une configuration qui définit quelles classes dépendent d'autres classes, quelles implémentations spécifiques des dépendances doivent être utilisées et comment ces dépendances doivent être créées. Ensuite, le conteneur crée ces objets et les fournit aux classes qui en ont besoin. Plus d'informations dans le chapitre Qu'est-ce qu'un conteneur DI ?

Échappement

L'échappement est la conversion de caractères ayant une signification spéciale dans un contexte donné en d'autres séquences correspondantes. Exemple : nous voulons écrire des guillemets dans une chaîne délimitée par des guillemets. Comme les guillemets ont une signification spéciale dans le contexte de la chaîne et que leur simple écriture serait comprise comme la fin de la chaîne, il est nécessaire de les écrire avec une autre séquence correspondante. Laquelle exactement est déterminée par les règles du contexte.

Filtre (anciennement helper)

Dans les templates, le terme filtre désigne généralement une fonction qui aide à modifier ou à reformater les données dans leur forme finale. Les templates disposent de plusieurs filtres standard.

Invalidation

Notification au snippet pour qu'il se redessine. Dans un autre sens, également la suppression du contenu du cache.

JSON

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

Composant

Partie réutilisable de l'application. Il peut s'agir d'une partie visuelle de la page, comme décrit dans le chapitre Écrire des composants, ou le terme composant désigne également la classe Component (un tel composant n'est pas nécessairement visuel).

Caractères de contrôle

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

Événements (events)

Un événement est une situation attendue dans un objet, qui, lorsqu'elle se produit, appelle ce qu'on appelle des handlers, c'est-à-dire des callbacks réagissant à l'événement (démonstration). Un événement peut être par exemple l'envoi d'un formulaire, la connexion d'un utilisateur, etc. Les événements sont ainsi une forme d'Inversion of Control.

Par exemple, la connexion de l'utilisateur se produit dans la méthode Nette\Security\User::login(). L'objet User a une variable publique $onLoggedIn, qui est un tableau auquel n'importe qui peut ajouter un callback. Au moment où l'utilisateur se connecte, la méthode login() appelle tous les callbacks du tableau. Le nom de variable de la forme onXyz est une convention utilisée dans tout Nette.

Latte

L'un des systèmes de templates les plus avancés.

Modèle

Le modèle est la base de données et surtout fonctionnelle de toute l'application. Il contient toute la logique applicative (on utilise aussi le terme logique métier). C'est le M de MVC ou MVP. Toute action de l'utilisateur (connexion, ajout d'un produit au panier, modification d'une valeur dans la base de données) représente une action du modèle.

Le modèle gère son état interne et offre une interface fixe vers l'extérieur. En appelant les fonctions de cette interface, nous pouvons interroger ou modifier son état. Le modèle ne connaît pas l'existence de la #vue ou du controller.

Modèle-Vue-Contrôleur

Architecture logicielle née du besoin de séparer, dans les applications à interface graphique, le code de gestion (controller) du code de la logique applicative (#modèle) et du code affichant les données (#vue). Cela rend l'application plus claire, facilite le développement futur et permet de tester les différentes parties séparément.

Modèle-Vue-Presenter

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

Module

Un module représente une partie logique de l'application. Dans une organisation typique, il s'agit d'un groupe de presenters et de templates qui traitent un domaine fonctionnel spécifique. Nous plaçons les modules dans des répertoires séparés, comme par exemple Front/, Admin/ ou Shop/.

Par exemple, une boutique en ligne sera divisée en :

  • Frontend (Shop/) pour la consultation des produits et l'achat
  • Espace client (Customer/) pour la gestion des commandes
  • Administration (Admin/) pour l'opérateur

Techniquement, ce sont des répertoires courants, mais grâce à une structure claire, ils aident à faire évoluer l'application. Le presenter Admin:Product:List sera ainsi physiquement situé par exemple dans le répertoire app/Presentation/Admin/Product/List/ (voir mapping des presenters).

Namespace

Espace de noms, partie du langage PHP depuis la version 5.3 et de certains autres langages de programmation, permettant d'utiliser des classes nommées de la même manière dans différentes bibliothèques sans conflit de noms. Voir la documentation PHP.

Presenter

Un 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 sur le disque, JSON, une redirection ou tout ce que vous pouvez imaginer.

Généralement, le terme presenter désigne un descendant de la classe Nette\Application\UI\Presenter. Selon les requêtes entrantes, il exécute les actions correspondantes et rend les templates.

Routeur

Traducteur bidirectionnel entre une requête HTTP / URL et une action de presenter. Bidirectionnel signifie qu'à partir d'une requête HTTP, on peut déduire l'action du presenter, mais aussi inversement, générer l'URL correspondante pour une action. Plus d'informations dans le chapitre sur le routage d'URL.

Les cookies SameSite fournissent un mécanisme pour reconnaître ce qui a conduit au chargement de la page. Il peut avoir trois valeurs : Lax, Strict et None (ce dernier nécessite HTTPS). Si la requête de page provient directement du site ou si l'utilisateur ouvre la page en la saisissant 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 indicateurs Lax, Strict et None). Si l'utilisateur accède au site via un lien depuis un autre site, les cookies avec les indicateurs Lax et None sont transmis au serveur. Si la requête est générée d'une autre manière, comme l'envoi d'un formulaire POST depuis un autre site, le chargement à l'intérieur d'un iframe, via JavaScript, etc., seuls les cookies avec l'indicateur None sont envoyés.

Service

Dans le contexte de l'Injection de Dépendances, un service désigne un objet qui est créé et géré par le conteneur DI. Un service peut être facilement remplacé par une autre implémentation, par exemple à des fins de test ou pour modifier le comportement de l'application, sans qu'il soit nécessaire de modifier le code qui utilise le service.

Snippet

Extrait, partie de la page qui peut être redessinée indépendamment lors d'une requête AJAX.

Vue

La vue est la couche de l'application chargée d'afficher le résultat de la requête. Elle utilise généralement un système de templates et sait comment afficher tel ou tel composant ou le résultat obtenu du modèle.

version: 4.0