DX ☑︎

Créer une véritable DX ou Developer eXperience

DX ou Developer eXperience

On vous répète souvent "l'expérience utilisateur c'est important", mais qu'en est-il de l'expérience développeur ? C'est ce que l'on appelle la DX ou Developer eXperience.

Pourquoi la DX est importante ?

La DX est importante pour plusieurs raisons :

  • La DX permet de gagner du temps

  • La DX permet de gagner en qualité

  • La DX permet de gagner en confort

  • La DX permet de gagner en sérénité

  • La DX permet de gagner en sécurité

En résumé ce gain de temps, de qualité, de confort, de sérénité et de sécurité se réalise grâce à l'automatisation de tâches répétitives et fastidieuses, l'automatisant des tests, en facilitant la mise en place de l'environnement de développement, en facilitant la mise en place de l'environnement de production, etc. Alors ne négligez pas la DX, elle est importante !

Symfony CLI

Cet outil est un excellent exemple de DX. Ré-écrire le même code est contraignant et fastidieux. Symfony CLI. Il permet de créer un projet Symfony en une seule commande. Il permet aussi de lancer un serveur web local ou encore un serveur de logs en une seule commande.

Voici la liste des commandes en fonction de vos projets d'applications. Pour les executer, il suffit de taper symfony ou php bin/console suivi de la commande :

CommandesDescription

check:requriments

Vérifier les prérequis de votre ordinateur

new

Créer un nouveau projet Symfony

server

Lancer le serveur web local avec les logs

server:start -d

Lancer le serveur web local sans bloquer le terminal

server:stop

Arrêter le serveur web local

about

Affiche des informations sur le projet en cours

completion

Génère le script de complétion pour le shell

help

Affiche l'aide pour une commande

list

Liste les commandes disponibles

assets:install

Installe les ressources web du bundle dans un répertoire public

cache:clear

Vide le cache

cache:pool:clear

Vide les pools de cache

cache:pool:delete

Supprime un élément d'un pool de cache

cache:pool:invalidate-tags

Invalide les tags de cache pour tous les pools ou un pool spécifique

cache:pool:list

Liste les pools de cache disponibles

cache:pool:prune

Purge les pools de cache

cache:warmup

Préchauffe un cache vide

config:dump-reference

Affiche la configuration par défaut d'une extension

dbal:run-sql

Exécute une requête SQL arbitraire depuis la ligne de commande

debug:autowiring

Liste les classes/interfaces utilisables pour l'autowiring

debug:config

Affiche la configuration actuelle d'une extension

debug:container

Affiche les services actuels d'une application

debug:dotenv

Liste tous les fichiers dotenv avec leurs variables et valeurs

debug:event-dispatcher

Affiche les écouteurs configurés pour une application

debug:firewall

Affiche des informations sur les pare-feu de sécurité

debug:form

Affiche des informations sur les types de formulaires

debug:messenger

Liste les messages pouvant être envoyés via les bus de messages

debug:router

Affiche les routes actuelles d'une application

debug:serializer

Affiche des informations sur la sérialisation des classes

debug:translation

Affiche des informations sur les messages de traduction

debug:twig

Affiche une liste des fonctions, filtres, globales et tests Twig

debug:validator

Affiche les contraintes de validation pour les classes

doctrine:cache:clear-collection-region

Vide la région de cache de collection du second niveau

doctrine:cache:clear-entity-region

Vide la région de cache d'entité du second niveau

doctrine:cache:clear-metadata

Vide le cache de métadonnées des différents pilotes de cache

doctrine:cache:clear-query

Vide le cache de requêtes des différents pilotes de cache

doctrine:cache:clear-query-region

Vide la région de cache de requête du second niveau

doctrine:cache:clear-result

Vide le cache de résultats des différents pilotes de cache

doctrine:database:create

Crée la base de données configurée

doctrine:database:drop

Supprime la base de données configurée

doctrine:ensure-production-settings

Vérifie que Doctrine est correctement configuré pour un environnement de production

doctrine:mapping:convert

Convertit les informations de mapping entre différents formats pris en charge

doctrine:mapping:import

Importe les informations de mapping depuis une base de données existante

doctrine:mapping:info

Affiche des informations de base sur toutes les entités mappées

doctrine:migrations:current

Affiche la version actuelle des migrations

doctrine:migrations:diff

Génère une migration en comparant la base de données actuelle avec les informations de mapping

doctrine:migrations:dump-schema

Dump la structure de la base de données vers une migration

doctrine:migrations:execute

Exécute une ou plusieurs versions de migration manuellement

doctrine:migrations:generate

Génère une classe de migration vide

doctrine:migrations:latest

Affiche la dernière version des migrations

doctrine:migrations:list

Affiche la liste de toutes les migrations disponibles et leur statut

doctrine:migrations:migrate

Exécute une migration vers une version spécifiée ou la dernière version disponible

doctrine:migrations:rollup

Rassemble les migrations en supprimant toutes les versions suivies et en n'insérant que la version existante

doctrine:migrations:status

Affiche l'état d'un ensemble de migrations

doctrine:migrations:sync-metadata-storage

S'assure que le stockage des métadonnées est à la dernière version

doctrine:migrations:up-to-date

Indique si le schéma est à jour

doctrine:migrations:version

Ajoute et supprime manuellement des versions de migration depuis la table des versions

doctrine:query:dql

Exécute une requête DQL arbitraire depuis la ligne de commande

doctrine:query:sql

Exécute une requête SQL arbitraire depuis la ligne de commande

doctrine:schema:create

Traite le schéma et le crée directement sur le stockage de l'EntityManager ou génère la sortie SQL correspondante

doctrine:schema:drop

Supprime le schéma de base de données complet de l'EntityManager ou génère la sortie SQL correspondante

doctrine:schema:update

Exécute (ou génère) le SQL nécessaire pour mettre à jour le schéma de la base de données en fonction des métadonnées de mapping actuelles

doctrine:schema:validate

Valide les fichiers de mapping

lint:container

Vérifie que les arguments injectés dans les services correspondent aux déclarations de type

lint:twig

Vérifie la syntaxe d'un template Twig et affiche les erreurs rencontrées

lint:xliff

Vérifie la syntaxe d'un fichier XLIFF et affiche les erreurs rencontrées

lint:yaml

Vérifie la syntaxe d'un fichier YAML et affiche les erreurs rencontrées

mailer:test

Teste les transports Mailer en envoyant un email

make:auth

Crée un authenticateur Guard de différents types

make:command

Crée une nouvelle classe de commande console

make:controller

Crée une nouvelle classe de contrôleur

make:crud

Crée les opérations CRUD pour une classe d'entité Doctrine

make:docker:database

Ajoute un conteneur de base de données à votre fichier docker-compose.yaml

make:entity

Crée ou met à jour une classe d'entité Doctrine, et éventuellement une ressource API Platform

make:fixtures

Crée une nouvelle classe pour charger des fixtures Doctrine

make:form

Crée une nouvelle classe de formulaire

make:message

Crée un nouveau message et son gestionnaire

make:messenger-middleware

Crée un nouveau middleware Messenger

make:migration

Crée une nouvelle migration basée sur les changements de la base de données

make:registration-form

Crée un nouveau système de formulaire d'inscription

make:reset-password

Crée un contrôleur, une entité et des référentiels pour une utilisation avec symfonycasts/reset-password-bundle

make:security:form-login

Génère le code nécessaire pour l'authentification form_login

make:serializer:encoder

Crée une nouvelle classe d'encodeur pour le sérialiseur

make:serializer:normalizer

Crée une nouvelle classe de normalisateur pour le sérialiseur

make:stimulus-controller

Crée un nouveau contrôleur Stimulus

make:subscriber

Crée une nouvelle classe d'abonné d'événements

make:test

Crée une nouvelle classe de test

make:twig-component

Crée un composant Twig (ou Live)

make:twig-extension

Crée une nouvelle extension Twig avec sa classe runtime

make:user

Crée une nouvelle classe d'utilisateur de sécurité

make:validator

Crée une nouvelle classe de validateur et de contrainte

make:voter

Crée une nouvelle classe de votant de sécurité

messenger:consume

Consomme des messages

messenger:failed:remove

Supprime les messages donnés du transport d'échec

messenger:failed:retry

Réessaie un ou plusieurs messages depuis le transport d'échec

messenger:failed:show

Affiche un ou plusieurs messages du transport d'échec

messenger:setup-transports

Prépare l'infrastructure requise pour le transport

messenger:stats

Affiche le nombre de messages pour un ou plusieurs transports

messenger:stop-workers

Arrête les travailleurs après leur message actuel

router:match

Aide au débogage des routes en simulant une correspondance de chemin d'informations

secrets:decrypt-to-local

Déchiffre tous les secrets et les stocke dans le coffre local

secrets:encrypt-from-local

Chiffre tous les secrets locaux dans le coffre

secrets:generate-keys

Génère de nouvelles clés de chiffrement

secrets:list

Liste tous les secrets

secrets:remove

Supprime un secret du coffre

secrets:set

Définit un secret dans le coffre

security:hash-password

Hash un mot de passe utilisateur

server:dump

Démarre un serveur de dump qui collecte et affiche les dumps en un seul endroit

server:log

Démarre un serveur de journalisation qui affiche les journaux en temps réel

translation:extract

Extrait les clés de traduction manquantes du code vers les fichiers de traduction

translation:pull

Récupère les traductions à partir d'un fournisseur donné.

translation:push

Envoie les traductions vers un fournisseur donné.

Dernière mise à jour