Lyon
CPE - 16/05/2025
📍
AFUP Day 2024 - Lyon
Attributs en PHP : un regard rétrospectif de la magie à l'adoption
@kevinbalicot
À la Recherche des Trésors Cachés de PostgreSQL
@l_avrot
Rôles & permissions : comment développer une marque blanche avec du Feature Flipping
@Florian_FB
Et donc du coup, j'ai voulu rendre le Serializer de Symfony plus rapide...
@matarld
Au-delà des heures : la semaine de 4 jours comme levier d’égalité
Albane Fagot-Veyron
AFUP Day 2024 - Lyon
Composer 101 : Gérer Efficacement ses Dépendances PHP
@alexdaubois
Plongée dans l’injection de dépendances
@florianm__
DDD !== Archi hexagonale
@B_Galati
Recettes de découplage équilibré avec Symfony
@chalas_r
@kevinbalicot
AFUP Day 2024 - Lyon
AFUP Day 2024 - Lyon
#[Override]
#[Deprecated]
#[Attribute]
#[Final]
#[Immutable]
#[Pure]
#[NoReturn]
#[Stringable]
#[MagicConstant]
#[Throws]
#[ReturnTypeWillChange]
AFUP Day 2024 - Lyon
Utilisation des attributs
Fonctionnalité native de php 8
Remplacer les annotations
Annotations non native php (nécessitent des bibliothèques)
AFUP Day 2024 - Lyon
Avantages
Inconvénients
- interprété par le langage donc plus performant
- Ne nécessite pas de librairie externe
- Meilleur intégration avec les IDE
- Disponible seulement Ă partir de PHP 8
- Ce n'est pas une dépendance, il ne faut pas en abuser
- Coût à l'utilisation sur la consommation
@l_avrot
AFUP Day 2024 - Lyon
AFUP Day 2024 - Lyon
Base de données relationnelle avancée :
C'est une base de données relationnelle open-source qui excelle dans la gestion de données complexes.
AFUP Day 2024 - Lyon
Transactional DDL Â
PostgreSQL exécute des commandes DDL (Data Definition Language) de manière transactionnelle assurant les modifications de schéma sûres et réversibles.
Foreign Data Wrappers (FDW) Â
PostgreSQL peut interagir avec des sources de données externes. On peut faire des requêtes sur toutes les sources de données.
AFUP Day 2024 - Lyon
UPSERT et MERGE Â
- Upsert : met à jour automatiquement la donnée si elle existe déjà .
- Merge : permet de fusionner des données en suele commande, en effectuant des insertions, des mises à jour ou des suppressions selon si les données existent déjà ou non.
Support des données géographiques :
PostgreSQL peut stocker et traiter des données géographiques en utilisant l'extension PostGIS. C'est idéal pour les applications qui font de l'analyse géographique.
@Florian_FB
AFUP Day 2024 - Lyon
AFUP Day 2024 - Lyon
AFUP Day 2024 - Lyon
Changement d'architecture :
- Passer de single-tenant Ă multi-tenant
PHPStan :
- Analyseur de code qui permet d'améliorer la qualité du code en détectant les erreurs et les bugs potentiels
AFUP Day 2024 - Lyon
Voter et Attributs :
- L'idée est d'utiliser un voter qui va servir d'authorizationHandler et se servir d'attributs pour gérer les ACL.
Feature Flipping :
- Le but est d'activer ou désactiver des fonctionnalités
- Système de toggles pour gérer les configurations clients
Albane Fagot-Veyron
AFUP Day 2024 - Lyon
AFUP Day 2024 - Lyon
C'est quoi la semaine Ă 4 jours ?
Garder le mĂŞme salaire
Diminution du temps de travail
Ce n'est pas un 4/5
AFUP Day 2024 - Lyon
UK
92% des entreprises continuent
Islande
89% de la population
France
Pays pilote sur 2024
96% ne veulent pas revenir Ă un 5 jours semaines
AFUP Day 2024 - Lyon
37% de la population française est atteinte d'une maladie chronique
Â
25% des femmes Ă 80%
10% des hommes Ă 80%
AFUP Day 2024 - Lyon
57% du turnover
Diminution du nombre d'arrĂŞts maladie
1,4% de rentabilité
AFUP Day 2024 - Lyon
Communication
Phase de test
Mise en place
Consulter les employé⋅e⋅s
Rassurer
Atelier sur la gestion du temps
Construction du projet
6 mois
Prendre en compte les retours
Mettre un cadre
AFUP Day 2024 - Lyon
@matarld
AFUP Day 2024 - Lyon
Composant Serializer
AFUP Day 2024 - Lyon
Composant Serializer
Lent
AFUP Day 2024 - Lyon
Composant Serializer
Composant TypeInfo
Générique
PHP Doc
Toutes les infos liées au type
AFUP Day 2024 - Lyon
Composant Serializer
Composant JsonEncoder
Stream
Cache Symfony
AFUP Day 2024 - Lyon
Composant JsonEncoder
Un encoder existe pour ce type ?
Process le type
Compute un encoder
Sauvegarde de l'encoder en cache
Oui
Non
AFUP Day 2024 - Lyon
Composant Serializer
Backward Compatibility compliquée
JSON streaming impossible Ă cause de l'architecture du composant
Beaucoup de projets ne sont pas limités par les performances
AFUP Day 2024 - Lyon
@alexdaubois
AFUP Day 2024 - Lyon
.json vs .lock
Optimisation de la génération de classmap
Commandes
bumb
audit
status -v
inverse de update
test sécurité avec l'API de packagiste
liste les fichiers modifiers dans les vendors
AFUP Day 2024 - Lyon
@florianm__
AFUP Day 2024 - Lyon
AFUP Day 2024 - Lyon
📚 Projet scolaire en PHP (sans framework)
PSR-11 - ContainerInterface
get(id)
has(id)
Normaliser la récupération d'objets et des paramètres
AFUP Day 2024 - Lyon
Patrons de conception
AFUP Day 2024 - Lyon
@B_Galati
AFUP Day 2024 - Lyon
AFUP Day 2024 - Lyon
Domain-Driven Design (DDD)
Approche de développement qui se concentre sur la logique métier
Â
- Modèle de Domaine : Représentation des concepts et des règles métiers
- Ubiquitous language : Langage commun entre les développeurs et les experts
- Agrégats : Groupes de modèles de domaine qui sont traités comme une seule unité
AFUP Day 2024 - Lyon
- Séparation des préoccupations : Le but est de séparer la logique métier du code technique en utilisant des ports et des adaptateurs.
- Ports et adaptateurs : Les ports permettent de définir les interactions avec le système et les adaptateurs pour connecter ces ports à des implémentations concrètes.
- Testabilité améliorée : La séparation facilite les tests unitaires et l'intégration de nouvelles fonctionnalités.
@chalas_r
AFUP Day 2024 - Lyon
AFUP Day 2024 - Lyon
- Controller à action unique : Utilisation de méthode __invoke pour que les controllers n'est qu'une seule action.
- Déclarer explicitement les dépendances : Utiliser le construct plutot qu'appeler ces fichiers "à la volée" dans le code.
- Ne pas étendre Abstract Controller systématiquement : Ça charge des fonctionnalités non nécessaires et entraîne un fort couplage avec le framework limitant la flexibilité du code.
- Séparer la logique métier de l'infrastructure : Clarifie la structure et facilite les modifications sans perturber la logique métier
- Utiliser des Dtos : Transmet les données de manière clair et contrôlée entre les couches de l'application.
AFUP Day 2024 - Lyon
- Ne pas tordre son entité pour le système : Maintenir la cohérence et l'intégrité des données en évitant les dépendances indésirables
- Envisager le pattern Command : Évite la surcharge des contrôleurs avec des opérations complexes.
- Ne pas transmettre les objets service comme Request partout : garantit de ne transmettre uniquement les données nécessaires à chaque couche (utiliser des Dtos).
- Mettre des contrats sur les services métier : Définit clairement les responsabilités, les entrées et les sorties des services pour favoriser la cohérence et la réutilisabilité.
- Mapper des dtos aux forms :  Simplifie la manipulation des données entre les forms et les couches métiers.
Questions ?
Lyon
CPE - 24/05/2024