AFUP Day 2024
Lyon
CPE - 16/05/2025

📍
Conférences
Conférences
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
Conférences
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
Attributs en PHP : un regard rétrospectif de la magie à l'adoption

@kevinbalicot
AFUP Day 2024 - Lyon
Attributs en PHP : un regard rétrospectif de la magie à l'adoption

AFUP Day 2024 - Lyon
C'est quoi les attributs en php ?
#[Override]
#[Deprecated]
#[Attribute]
#[Final]
#[Immutable]
#[Pure]
#[NoReturn]
#[Stringable]
#[MagicConstant]
#[Throws]
#[ReturnTypeWillChange]
Attributs en PHP : un regard rétrospectif de la magie à l'adoption

AFUP Day 2024 - Lyon
Objectif :
Utilisation des attributs
Fonctionnalité native de php 8
Remplacer les annotations
Annotations non native php (nécessitent des bibliothèques)
Attributs en PHP : un regard rétrospectif de la magie à l'adoption

AFUP Day 2024 - Lyon
Avantages
Pourquoi ?
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

À la Recherche des Trésors Cachés de PostgreSQL
@l_avrot
AFUP Day 2024 - Lyon

À la Recherche des Trésors Cachés de PostgreSQL
AFUP Day 2024 - Lyon
Qu'est ce donc cette diablerie ?
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.


À la Recherche des Trésors Cachés de PostgreSQL
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.
Les forces de PostgreSQL :

À la Recherche des Trésors Cachés de PostgreSQL
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.
Petites astuces PostgreSQL :
Rôles & permissions : comment développer une marque blanche avec du Feature Flipping

@Florian_FB
AFUP Day 2024 - Lyon

Rôles & permissions : comment développer une marque blanche avec du Feature Flipping
AFUP Day 2024 - Lyon
Retour d'expérience sur un projet chez GL Events

Rôles & permissions : comment développer une marque blanche avec du Feature Flipping
AFUP Day 2024 - Lyon
Outils et techniques utilisés :
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

Rôles & permissions : comment développer une marque blanche avec du Feature Flipping
AFUP Day 2024 - Lyon
Outils et techniques utilisés :
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
Au-delà des heures : la semaine de 4 jours comme levier d'égalité

Albane Fagot-Veyron
AFUP Day 2024 - Lyon
Au-delà des heures : la semaine de 4 jours comme levier d'égalité

C'est quoi la semaine Ă 4 jours ?
AFUP Day 2024 - Lyon
Au-delà des heures : la semaine de 4 jours comme levier d'égalité

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
Au-delà des heures : la semaine de 4 jours comme levier d'égalité

Dynamique mondial
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
Au-delà des heures : la semaine de 4 jours comme levier d'égalité

Roue des privilèges
37% de la population française est atteinte d'une maladie chronique
Â
25% des femmes Ă 80%
10% des hommes Ă 80%
AFUP Day 2024 - Lyon

Au-delà des heures : la semaine de 4 jours comme levier d'égalité

Bénéfices
57% du turnover
Diminution du nombre d'arrĂŞts maladie
1,4% de rentabilité
AFUP Day 2024 - Lyon
Au-delà des heures : la semaine de 4 jours comme levier d'égalité

Comment passer en 4 jours ?
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
Et donc du coup, j'ai voulu rendre le Serializer de Symfony plus rapide...

@matarld
AFUP Day 2024 - Lyon
Et donc du coup, j'ai voulu rendre le Serializer de Symfony plus rapide...

Composant Serializer

AFUP Day 2024 - Lyon
Et donc du coup, j'ai voulu rendre le Serializer de Symfony plus rapide...

Composant Serializer
Lent
AFUP Day 2024 - Lyon
Et donc du coup, j'ai voulu rendre le Serializer de Symfony plus rapide...

Composant Serializer

Composant TypeInfo
Générique
PHP Doc
Toutes les infos liées au type
AFUP Day 2024 - Lyon
Et donc du coup, j'ai voulu rendre le Serializer de Symfony plus rapide...

Composant Serializer

Composant JsonEncoder
Stream
Cache Symfony
AFUP Day 2024 - Lyon
Et donc du coup, j'ai voulu rendre le Serializer de Symfony plus rapide...

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
Et donc du coup, j'ai voulu rendre le Serializer de Symfony plus rapide...

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
Composer 101 : Gérer Efficacement ses Dépendances PHP

@alexdaubois
AFUP Day 2024 - Lyon
Composer 101 : Gérer Efficacement ses Dépendances PHP

.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
Plongée dans l’injection de dépendances

@florianm__
AFUP Day 2024 - Lyon
Plongée dans l’injection de dépendances

📚 Projet scolaire en PHP (sans framework)
PSR-11 - ContainerInterface
AFUP Day 2024 - Lyon
Plongée dans l’injection de dépendances

📚 Projet scolaire en PHP (sans framework)
PSR-11 - ContainerInterface
get(id)
has(id)
Normaliser la récupération d'objets et des paramètres
Principes SOLID
AFUP Day 2024 - Lyon
Plongée dans l’injection de dépendances

- Lecture d'une configuration YAML
- Création du container
- Autowiring pour éviter la configuration « à la main »
-
Gestion des tags
- Chain of responsibility
- Decorator
Patrons de conception
AFUP Day 2024 - Lyon
DDD !== Archi hexagonale

@B_Galati
AFUP Day 2024 - Lyon
DDD !== Archi hexagonale

AFUP Day 2024 - Lyon
Domain-Driven Design (DDD)
Approche de développement qui se concentre sur la logique métier
Qu'est-ce que le DDD ?
Â
- 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é
DDD !== Archi hexagonale

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.
Qu'est-ce qu'une architecture hexagonal ?
Recettes de découplage équilibré avec Symfony

@chalas_r
AFUP Day 2024 - Lyon
Recettes de découplage équilibré avec Symfony

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.
Recettes de découplage équilibré avec Symfony

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.
Merci
Questions ?

AFUP Day 2024
Lyon
CPE - 24/05/2024
AFUP Lyon 2024
By Nicolas Jourdan
AFUP Lyon 2024
- 44