Retour sur le forum PHP 2024
Revivez les moments forts du Forum PHP 2024 avec l'AFUP ! Découvrez l'avenir du PHP et les innovations qui feront la différence.
Couramment utilisés dans de nombreux langages de programmation et frameworks, comme Symfony utilisé chez Efficience IT, les bundles, ou en français “paquets” font référence à un groupement de plusieurs fichiers ou de packages logiciels. Ils sont livrés comme un ensemble logique de fonctionnalités ou composants.
Leur forme de package rend la distribution et l’installation de logiciels plus facile, car ils permettent aux utilisateurs, grâce à Composer, de télécharger et d’installer plusieurs composants logiciels en une fois.
Cela permet aux développeurs de regrouper et d’envoyer des bibliothèques de codes, des fichiers de configuration ou encore d’autres ressources nécessaires à la conception de logiciels.
Le bundle HTTPClient (Guzzle est la bibliothèque la plus téléchargée) a été introduit dans la version Symfony 4.3, il est aujourd’hui intégré lors de l’ouverture d’un projet Symfony. Il offre une solution efficace pour communiquer avec des services externes via des requêtes HTTP, des API REST, des fonctionnalités web.
Ce bundle met à disposition une interface orientée objet qui permet d’envoyer des requêtes HTTP, gérer les réponses et manipuler les en-têtes. Il propose de nombreuses autres fonctionnalités comme la gestion des cookies, et celle des flux, l’envoi des fichiers, la mise en cache, et par ailleurs la gestion des exceptions. Vous pouvez, par la même occasion, définir les options de configuration dans le fichier de votre projet Symfony.
Ce bundle est là pour faciliter la pagination des résultats dans une application Symfony. En permettant la personnalisation et la pagination en fonction des besoins spécifiques de l'application, ce bundle propose une intégration facile du KnpPaginator. Ce qui offre des fonctionnalités avancées de pagination.
Que ce soit pour paginer les résultats des requêtes Doctrine ou d'autres sources de données, celui-ci simplifie la gestion et l'affichage des résultats paginés de manière efficace.
Le bundle KnpPaginator met à disposition une configuration flexible pour définir le nombre d’éléments par page, le nombre de pages à afficher dans la navigation, les paramètres d’URL, et bien plus encore.
Ce bundle permet de créer et d’envoyer des e-mails grâce à un système puissant. Les messages peuvent être pris en charge en différentes parties. En clair, Mailer facilite tout ce qui gravite autour de l’envoi de mail. Ceux-ci peuvent être créés à partir d’un template pour une base avec style, cela permet également d’envoyer avec des pièces jointes ou même des headers/ en-têtes. Un autre avantage à ce bundle, il est facilement testable étant donné qu’il est sous le système de Symfony.
Le bundle Faker permet de générer des informations factices, tout en étant réalistes, pour réaliser des tests. Que ce soit pour démarrer une base de données, créer de nouveaux documents XML, remplir votre persistance pour la tester, ou encore anonymiser des données qui proviennent d’un service de production, Faker est le bundle idéal.
Ce bundle utilise également la localisation, il prend en charge de nombreuses langues et peut donc générer des données dans celles-ci. L’anglais est défini par défaut. C’est à vous de spécifier la localisation lors de la création de l’instance Faker.
Snappy est un bundle simple à intégrer dans un projet Symfony. Celui-ci permet de générer des fichiers PDF à partir de documents HTLM. En plus de ça, ce bundle prend en charge d’autres formats, comme les images (PNG, JPEG). Cela offre la possibilité de créer différents types de fichiers en utilisant la même structure.
Le bundle Snappy est présent pour faciliter la conversion en utilisant sa propre bibliothèque, en offrant, à côté de ça, des fonctionnalités supplémentaires, comme la personnalisation et la configuration des données converties.
Le bundle Easy Admin est disponible pour la conception d’interfaces d’administration pour les applications web. De nombreuses fonctionnalités sont mises à disposition telle que la création des listes, celle formulaires de création, de modification et de suppression pour chacune des entités.
Ce bundle est aussi connu, car il ne nécessite pas de grande quantité de code. Et également pour son interface utilisateur conviviale et intuitive. Il permet aussi de gérer les opérations CRUD (Create, Read, Update, Delete) sur les entités d’un projet Symfony en cours.
Swagger Nelmio est un bundle qui vient utiliser Swagger pour générer automatiquement une documentation interactive à destination d’une API. Il permet de décrire, produire et consommer des applications RESTful. Un article est disponible sur le blog, vous verrez les fonctionnalités du bundle Swagger Nelmio en profondeur.
Utilisé en individuel, Nelmio permet d’envoyer des en-têtes Cross-Origin Ressource Sharing, et de générer automatiquement de la documentation pour les API REST, grâce à des annotations et des spécifications Swagger. Il gère les demandes d’OPTIONS de contrôle en amont CORS. En étant configuré en PHP, cela signifie que n’importe quelle requête servant des fichiers statiques et qui ne passe pas par Symfony, n’aura pas les en-têtes CORS ajoutés. Il est donc recommandé de configurer les en-têtes dans le serveur web.
DataTable est un bundle conçu pour être entièrement enfichable, les sources de données affichables dans cette bibliothèque n’ont pas de limite ou de façon d’affichage spécifique. Ce bundle est disponible avec Composer, le gestionnaire de dépendances pour les projets Symfony.
Ce bundle fait appel à des adaptateurs lorsqu’une demande de données est formulée, comprenant également des critères de recherche et de tri. Un ensemble de résultats est alors renvoyé avec des métadonnées sur le nombre d’enregistrements.
LexikTranslation permet l’importation et l’exportation du contenu des fichiers de traduction dans la base de données, tout en fournissant une interface graphique pour modifier les traductions. Cela permet d’avoir une vue d'ensemble pour vérifier si la traduction est bien complète dans la totalité des domaines de traduction.
Créé par le même développeur que le bundle précédent, alias Lexit, JWT Authentification fournit une authentification Json Web Token, souvent utilisé pour “privatiser” une API.
Il faut savoir qu’une API peut être publique, ce qui signifie que tout le monde peut faire un call dessus et celle-ci répondra sans erreurs. Mais elle peut aussi nécessiter une authentification. Ce bundle donne un moyen d’authentifier à l’aide de tokens.
Vich facilite le téléchargement des dossiers liés aux entités Doctrine ORM. Il offre des fonctionnalités avancées et personnalisables. Ce bundle fonctionne sous le système du “mapping” pour configurer les entités Symfony qui doivent prendre en charge l’upload de fichiers. Cela permet de limiter la quantité de code complexe à écrire, tout en facilitant l'organisation et la manipulation des fichiers dans l’application.
La taille maximale des fichiers, les formats autorisés et les noms générés automatiquement, sont des éléments configurables dans les paramètres. Des fonctionnalités de traitement d’images, comme la redimension, le recadrage et la conversion de formats.
PHPOffice est un bundle en open source, utilisé pour générer des documents bureaucratiques PHP, comme les fichiers Excel, Word ou PowerPoint dont nous avons l’habitude dans la suite Office365.
Chacune des composantes est destinée à travailler avec un format de fichier spécifique :
Ce bundle bundle PhpOffice offre une grande flexibilité. Les différentes composantes sont activement maintenues et mises à jour par la communauté, ce qui en fait un atout important.
Le bundle Console est un composant fondamental de Symfony. Il fournit une interface en ligne de commande (CLI) qui permet l’interaction avec l’application, l’automatisation des tâches, l’exécution des scripts et plus encore.
Celui-ci facilite la création de commandes personnalisées, qui offrent de nombreuses fonctionnalités, il est largement utilisé dans la communauté Symfony pour effectuer des lignes de commande conviviales pour les utilisateurs.
Une aide est automatiquement générée pour les commandes, cela permet aux utilisateurs d’obtenir des informations sur l’utilisation de celles-ci, leurs arguments et leurs options disponibles.
Ce bundle permet l'intégration du système de gestion de base de données (SGBD) et du mapping objet relationnel par Doctrine, tout ça dans une application Symfony. Cela permet une transparence entre Symfony et Doctrine, ce qui offre un puissant outil de gestion de la base de données.
Doctrine est un ORM (Mapping objet-relationnel) populaire qui propose la représentation des données de base de données sous d’objets PHP, ce qui simplifie la manipulation de ceux-ci. Il offre également un outil de gestion des migrations, ce qui permet de créer, d’exécuter et de suivre les migrations à l’aide de commandes de console dédiées.
Le bundle Doctrine facilite la configuration et l'utilisation de gestionnaires d'événements dans le contexte de Symfony. Il les prend en charge pour intercepter et réagir à des actions spécifiques, telles que la création, la mise à jour ou la suppression d'entités. Ce bundle utilise la configuration de Symfony pour définir les paramètres de connexion à la base de données, le mapping des entités, les gestionnaires d’évènements, et encore d’autres paramètres spécifiques à Doctrine.
Le bundle Twig est un moteur de template moderne et puissant. Il facilite l'ajout de vos propres extensions et vos filtres personnalisés dans vos projets Symfony, pour étendre les fonctionnalités de Twig, en plus des filtres et des extensions prédéfinis.
Le bundle Twig est automatiquement configuré au moment de l’installation de Symfony en application web, ce qui permet d'utiliser Twig comme moteur de templates par défaut. Il gère les paramètres de configuration, comme les répertoires de templates, les options de cache ou encore les extensions. Il n’est pas installé lorsque vous créez un skeleton.
Ce bundle offre un système de mise en cache, qui a pour objectif d’améliorer les performances grâce aux stockages des résultats du rendu des templates. Ceux-ci peuvent varier selon les environnements de développement et de production.
Le FOSUserBundle est un bundle Symfony qui simplifie la gestion des utilisateurs dans une application Symfony. Il fournit des fonctionnalités prêtes à l'emploi pour l'authentification, l'autorisation, la gestion des utilisateurs et la réinitialisation du mot de passe, en se basant sur les bonnes pratiques de Symfony. Le bundle FOSUser permet une configuration flexible et s’intègre à d’autres bundles Symfony.
Ce bundle fournit des fonctionnalités pour gérer la création, la modification, la suppression et la recherche des utilisateurs dans les données d’un projet Symfony. Il permet aussi la gestion des rôles et des permissions personnalisées pour contrôler l’accès des utilisateurs connectés.
Le SensioFrameworkExtraBundle est un bundle Symfony qui offre des fonctionnalités supplémentaires pour simplifier le développement d'applications Symfony en utilisant des annotations. Celles-ci sont spéciales et permettent la configuration du comportement des contrôleurs, des routes, des actions, des vues et d'autres aspects du framework. Cela permet de simplifier et rationaliser le code, tout en évitant la configuration manuelle dans des fichiers de configurations séparés.
Les différentes annotations possibles :
Ce bundle s’intègre également à d’autres bundles Symfony.
Le bundle JMSSerializer mis à disposition par Symfony, facilite la sérialisation et la désérialisation des objets PHP en différents formats, tels que JSON, XML, YAML, etc. C’est grâce à des annotations de configuration que l’on peut contrôler le processus de sérialisation/désérialisation, ainsi que gérer les relations entre objets. Ce bundle offre une flexibilité et une personnalisation avancées pour gérer les besoins spécifiques d’un projet.
JMSSerializer permet de convertir des objets PHP en données sérialisées dans différents formats, et inversement, de convertir des données sérialisées en objets PHP. Ce qui facilite amplement l'échange de données entre différentes parties de votre application, notamment lors de la communication avec des API externes.
En plus d’être utilisés pour l’envoi de fichiers, les bundles offrent la possibilité d’ajouter des nouvelles fonctionnalités sur Symfony à travers des bundles tiers, mis à disposition par des développeurs indépendants.
Ces éléments sont essentiels pour la réalisation de vos projets Symfony. Certains sont déjà installés lors de la première utilisation, d’autres sont à ajouter. Tout cela peut varier selon les besoins des projets que nous développons à votre demande.