Darkmira présent pour le Forum PHP 2019 !

Kevin Nadin
Darkmira FR
Published in
11 min readJan 24, 2020

Cette année encore, Darkmira était représenté au Forum PHP 2019 au Marriott Hotel le 25 et 26 Octobre 2019 organisé par l’AFUP, Association Françaises des utilisateurs de PHP. Et cette année encore comme depuis les 3 dernières années, Darkmira est également sponsor Bronze de l’événement.

Cette année le sponsoring a de plus été agrémenté par le sponsor des tours de cou, utilisé pour les badges des visiteurs, des sponsors et des conférenciers.

Les personnes présentes qui ont assistés aux conférences sont :

  • Cyrille GRANDVAL, Directeur Général et Organisateur du DarkmiraTour, événement communautaire au Brésil.
  • Thomas DUTRION, CTO et organisateur du ScotlandPHP, événement communautaire en Écosse
  • Vincent MONTJARET, Développeur et formateur à l’école IPSSI et ESGI
  • Et moi-même, Kevin NADIN, Développeur, formateur à l’école IPSSI et bénévole à l’association AFUP

Vous avez certainement pu nous croiser avec nos vestes verte et blanche durant l’événement, nous avons été plutôt voyant ;)

La journée a commencé avec un buffet petit-déjeuner et la keynote d’ouverture présenté par Adrien Galou, président de l’AFUP. Puis nous avons pu avoir un rapide aperçu des speakers qui allaient parler en cette matinée.

L’événement se compose de 2 salles de conférence, l’une plus grande que l’autre, pour ainsi avoir constamment 2 conférences en parallèle. Il est toujours difficile de faire son choix mais nous allons vous présenter les conférences auquel j’ai a pu assisté.

1er JOUR

PHP Pragmatic Development — Frederic BOUCHERY

Frédéric commence sa conférence avec cette citation :
« L’ignorant affirme, le savant doute, et le sage réfléchit »

Son message est qu’il est important d’écouter ceux qui ont de l’expérience et de ne pas se fermer aux propositions

Il décide ensuite de poser la question suivante à l’audience : Pourquoi structurons nous notre code ?

Si une machine pouvait coder son propre code elle ne structurerai pas, mais nous si, nous en avons besoin, c’est pour le faire évoluer et le maintenir, nous codons pour soi et pour les autres également. Et Frédéric nous le dit bien :

« Vous êtes votre futur legacy »

« N’importe quel imbécile peut écrire du code, les bons font du code compréhensible par les humains »

« Le code c’est comme une blague, si il faut l’expliquer c’est qu’il est mauvais »

Une conférence qui nous fait nous poser des questions sur notre manière de travailler, on peut adhérer ou non, personnellement je n’ai pas été convaincu par tout ce qui est partagé dans cette conférence, comme le fait de faire des classes aux propriétés publiques plutôt qu’utiliser un tableau de données : je comprends son idée, mais pourquoi s’arrêter à une classe basique et ne pas pousser la programmation orienté objet plus loin que cela ? Parce que c’est plus facile à utiliser ? Peut-être, mais l’exploitation derrière ne donnera pas quelque chose de propre si la classe est « open bar »

Redis, ce n’est pas que pour le cache — Gregoire PINEAU

Cette conférence sur Redis nous donne un détail de toutes les options favorites de Grégoire.

N’ayant jamais utilisé Redis dans ma vie professionnelle, je ne peux pas juger la pertinence et l’utilisation des options que Grégoire nous présente, mais gardez en tête qu’avec cette conférence vous avez toutes les clés en main pour démarrer avec cette technologie.

Une application résiliente, dans un monde partiellement dégradé — Pascal MARTIN

Pascal nous parle cette fois de son expérience sur la gestion de la production qu’il a pu avoir ces dernières années dans son rôle de Dev-Ops

Et démarre d’un constat simple: une application ne peut pas fonctionner à 100 %, tout le temps, il faut donc apprendre à gérer ces indisponibilités et à diminuer et accepter le faible taux d’indisponibilité que l’on ne peut pas éviter, sans oublier que le plus important est l’expérience utilisateur.

Pascal repasse avec humour toutes les architectures connues et étudie les possibilités en terme de maintenance de ces solutions

Concevoir des applications PHP résilientes en 2019 — Mickaël ANDRIEU

La conférence de Mickaël se concentre sur la présentation du design Pattern « circuit breaker »

Tant que le service tiers est dispo, tout se passe bien, sinon le circuit breaker va retirer les appels pour re-vérifier sa disponibilité.

Le but est que l’application doit être capable de fonctionner en mode dégradé, et ne doit pas complètement planté si un seul élément n’est pas disponible (par exemple si un appel à une API ne fonctionne pas, le reste de l’application doit continuer à fonctionner).
Arrivé à un certain nombre d’erreur, plus besoin d’appeler le service, on arrive à une réponse dégradée.

PHP 8 et Just In Time Compilation — Benoit JACQUEMONT

La présentation de Benoit consiste à nous présenter un évolution de performance, de PHP 5 à PHP 7 avec la compilation du code avec « Just In Time Compilation »

PHP est par définition un langage interprété, il est donc plus lent que C qui est compilé

Une évolution du langage de PHP avait été faite par Facebook avec le langage HHVM pour changer la compilation de PHP et gagner en perf

Puis nous vient la question suivante, comment compiler le même code tout en gagnant en performance

Réponse : compiler le code ce qui est le plus souvent exécuté

Pour cela on utilise un profiler de code pour voir le code exécuté , et JIT Compilation nous en fournit un

PHP JIT integration :

  • profiler interne
  • plein de compilateur rapide
  • Multiple OS support

JIT sera implémenté en PHP 8, et le cache généré par le OpCode sera rechargé et non re-compilé à chaque fois, nous aurons donc un gain de performance du langage

Et de plus, si JIT pouvais faire que PHP soit aussi rapide que C, alors les fonctions php internes pourraient être elle aussi en PHP

Se prémunir contre l’imprévisible : une analyse des failles les plus courantes en PHP — Paul MOLIN

Cette conférence de Paul est une des plus notables de cette journée, car la sécurité de nos applications développé en PHP est un point d’attention très important !

Il est difficile de résumer cette conférence sans rentrer dans les détails techniques, les failles sont très bien expliqués, en commençant par la plus connu,
« l’injection SQL »:comment elle se déclenche, comment s’en prémunir, etc.

Il nous parle également des attaques CSRF, des attaques de déni de service pour tenter un crash de serveur, de la manière dont il est possible de modifier du code à distance étant un hackeur, et de faire attention également au code open source, de vérifier que vos Framework / Librairies sont bien à jour, car si ce n’est pas le cas il est possible qu’elles utilisent du code ouvert aux failles de sécurité.

Certains outils existe également, comme DOMPurify qui permet de nettoyer les tags dangereux que vous pourriez avoir dans votre partie HTML / Twig

Un point d’attention est également sur la protection des URL qui permettent de récupérer ou supprimer des données sans vérification de droits ou autre.

Je rajouterai également que le Top 10 OWASP vous rajoute des détails en complément de cette présentation. La sécurité est une affaire de tous, il faut y prêter du temps !

Mercure, et PHP s’enamoure enfin du temps réel — Kévin DUNGLAS

Kevin Dunglas, bien connu de la communauté Symfony, nous présente l’outil Mercure.
Il est difficile de résumer, et l’expérience de Kévin Dunglas à être speaker se ressent, cela va vite et c’est bien expliqué.
Il nous présente les différentes parties de Mercure en nous parlant de Mercure en HTTP2, de méthodes de publishing, de subscribing, d’autorisation avec par exemple des cookie mercureAuthorization.

Si l’outil Mercure vous intéresse, cette vidéo est pour vous !

Concevoir pour des futurs souhaitables — Marie-Cécile GODWIN,Thomas DI LUCCIO

Ici une conférence de Marie-Cécile et Thomas moins tech, mais tout aussi importante, sur l’écologie et le futur qui nous attends à court terme, et ce que nous pouvons faire à notre échelle de développeur.

Pas de résumé à faire, il faut voir cette vidéo ! Tout simplement !

Apéro communautaire

Comme tous les ans, l’apéro communautaire s’est tenu au café Oz non loin du Marriott Hotel où se tenaient les conférences, un très bon moment de convivialité pour se poser autour d’un verre et de parts de pizzas à discuter entre devs, cet apéro est à ne pas rater lorsque l’on est sur place ;)

2eme JOUR

Si Darwin avait raison, l’agilité fonctionne par hasard. — François ZANINOTTO

Ici une conférence vraiment unique en son genre, François Zaninotto prends le rôle d’un chercheur et analyse l’espèce humaine en entreprise et analyse ce que fait l’espèce humaine qui adopte le mode de travail Agile.

C’est… particulier à suivre, mais cela pourrait vous plaire ! Personnellement je n’ai pas réussi à accrocher, mais cela ne sera peut être pas le cas pour vous.

Aggressive PHP quality assurance in 2019 — Marco PIVETTA (Ocramius)

Pourquoi avons nous besoin de standard dans notre qualité de code ?
Ocramius répond à cette question dans cette présentation qui nous parle de PHP « agressif »
Nous sommes souvent dans une situation où la qualité passe après car nous sommes pressé par les deadlines, mais le problème est que la qualité retiré fait du code plus difficilement maintenable, et qui par répercussion va nous demander plus de temps à réparer ou améliorer par la suite. Et pour cela avoir des process de review et de mode de développement tel que le Test Driven Development, la CI, faire du Pair Programming, etc. ne suffit pas, et la QA est bien notre problème aussi.

Que peux t’on y faire ?

Ocramius nous encourage alors à être clair dans beaucoup d’autres domaines que nous survolons généralement, par exemple sur la précision de notre message de commit. Pour définir les Uses cases, il est important de les écrire, et les écrire en scénario Gherkin fait qu’ils pourront être utilisable avec des test fonctionnels.

De plus, nous avons toujours à notre disposition des outils d’analyse statique:

Psalm (good) / PHPStan / Phan (top) / PHP Inspections EA (for phpstorm)

=> Ils regardent votre code et vous disent ce qui ne convient pas

Ocramius continue ensuite en nous décrivant 3 outils pour faire des tests unitaire et fonctionnels qui permettront de rendre votre projet plus robuste : PHPUnit, Behat et PHPSpec.

La qualité de code est importante pour la longévité et la robustesse de vos projets, ce talk est à ne pas rater !

Symfony HttpClient vs Guzzle vs HTTPlug — Nicolas GREKAS

Nicolas Grekas, personne emblématique et incontournable de Symfony en France, nous présente cette fois ci les performances et les possibilités du nouveau composant de Symfony : HTTPClient

Il commence d’abord par un petit historique des méthodes d’appel HTTP, avec la très connu et très utilisé cURL, présente par défaut dans PHP

Puis est arrivé Guzzle, aujourd’hui en version 6

Et maintenant HTTPClient

Nicolas nous fait une démonstration d’appel d’url avec traitement de chaîne de caractères et upload d’image avec les 3 méthodes, et compare les temps de réponse, de plus il configure les méthodes ensuite différemment, notamment avec HTTPCLient qui utilise HTTP/2 .

Et ce n’est pas seulement en temps de réponse, mais également en charge mémoire que les différentes parties de la démon sont intéressantes

Une conférence passionnante à suivre avec la démo live faite sur ces 3 outils

Symfony Checker is coming — Valentine BOINEAU

Valentine nous présente un nouvel outil d’analyse statique pour les projets Symfony

L’outil est basé sur 3 méthodes :

- Abstract syntax tree : PHP crée un ASP pour pouvoir compiler le code

- Control Flow Graph : optimisation en retirant le code mort

- Static Single Assignment : modifier le code pour que chaque variable ne soit appelé qu’une et une seule fois, et trace la valeur des variable plus facilement, surtout pour les changements

En mélangeant ces 3 méthodes, on a beaucoup de possibilité de changement, de plus Symfony Checker donne des statistiques sur le codes et l’évolution de dette technique que le projet engendre

Tout pour se préparer à PHP 7.4 — Damien SEGUY

Damien Seguy nous passe en détail toutes les nouveautés que PHP 7.4 va nous apporter, en précisant en détails les ajouts et les retraits sur le langage. En résumé très bref ce qui est déprécié :

- plus de ternaires 1 ?2 :3 ?4 :5 sans parenthèses, 1 ?2 ?3 :4 :5 reste OK car lisible

- plus de short tags

- obligation d’utiliser des parenthèses pour opé mathématiques dans une concaténation

- l’accès aux caractères d’une chaîne avec $string[1] ne sera plus possible, $string{1} reste

- real et is_real sont dépréciés

- array_key_exists ne prends plus d’objet

Et dans les ajouts, le plus attendu est bien entendu le typage fort des paramètres d’une classe :

class X {
public int $id;
public FooClassName $class;
}

Et nous avons aussi :

  • Opérateur “…” Pour Array
  • fonctions fléchés pour les fonctions anonymes
  • apporte un peu de nuance sur les return type s’ils sont compatibles les uns avec les autres lors de cas de Class/interface b extends a {}
  • strip_tags() peut prendre un tableau
  • ext/wddx est retiré
  • ext/hash s’impose

Et côté performance :

  • 1 à 5% plus rapide par rapport à PHP 7.3
  • Potentiel de gain avec ext/FFI
  • Potentiel de pertes avec les propriétés typées => ne pas les utiliser rend le programme plus lent

Une année de PHP asynchrone en production — Benoit VIGUIER

Benoit Viguier nous présente la manière qu’il a utilisé pour implémenter son projet avec des appels asynchrones, et ainsi permettre une meilleure gestion du temps d’attente.
Sa conférence se suit très bien, et les nombreux graphes de la logique de réflexion de l’application aide à comprendre le cheminement de pensée faite autour de l’asynchrone avec PHP, qui rappelons le n’est pas un langage fait pour cela à la base.

Dans sa conférence il nous parle alors d’API et principalement de promesses, pour gérer tous les appels attendus, entrant et sortant, et nous indique les frameworks que l’on peut utiliser, comme Reactphp ou Amp

L’architecture progressive — Matthieu NAPOLI

Mathieu Napoli pour la dernière conférence tech de la journée nous présente comment organiser son / ses projet(s) pour apporter la meilleure des progressions, ils séparent l’étude en 3 points importants :

  • Le métier : penser complexité, DDD, CRUD, SQL
  • Le business : Explore, Expand et Extract
  • L’Humain : Diversité des compétences et des parcours, architecture doit être adapté au niveau de l’équipe

Par la suite il nous explique qu’il faut penser au découpage de l’application, c’est à dire qu’il faut se poser les bonnes questions. Il faut ensuite identifier les modules et les découpler via des events et de l’abstraction, et bien séparer le Back et le front. Pensez au DTO, ne pas hésiter à mapper deux classes PHP à la même table en BDD pour séparer les rôles, etc.

En résumé, l’architecture progressive est défini par Mathieu Napoli comme ceci :

  • Une approche plutôt que LA solution
  • Cela dépend du métier, du business et du facteur Humain
  • Il faut adapter les solutions à l’échelle du module
  • La cohérence n’est pas une priorité
  • Il faut avancer progressivement

Conclusion

Toute l’équipe de Darkmira souhaite adresser un grand merci à l’AFUP qui, comme tous les ans, organise un événement à ne pas manquer, avec un accueil formidable, des talks toujours sélectionnés avec le plus grand intérêt, et nous serons assurément au rendez vous l’année prochaine pour le Forum PHP 2020

En attendant l’AFUP Day 2020 , prévu pour le 15 mai 2020, approche à grand pas.
Pour cet événement nous aurons 2 speakers de Darkmira qui présenteront chacun un sujet dans une ville différente :
- Kevin NADIN présentera à l’AFUP Day de Lille le sujet « Voyons ensemble de Design Pattern Factory »
- Thomas DUTRION présentera à l’AFUP Day de Lyon le sujet « Tu n’es pas un {framework} développeur ! »

Nous avons hâte de vous retrouver dans ces villes, et nous vous retrouverons bien sûr lors des meetup Parisiens et en Lorraine !

--

--

Kevin Nadin
Darkmira FR

Développeur PHP, employé chez Darkmira et conférencier à mes heures Bénévole dans l'association JVM Events. @kevinjhappy in:kevin-nadin