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

  1. Lecture d'une configuration YAML
  2. Création du container
  3. Autowiring pour éviter la configuration « à la main »
  4. Gestion des tags
    1. Chain of responsibility
    2. 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