Monsieur Biz sponsor du Forum PHP 2020

Nous y étions ! Au Forum PHP 2020, édition en ligne. Et c’était super !

L’aventure c’est important en ce moment. En pleine pandémie, quand nos intéractions sont limitées, il nous faut voir du monde et cette édition du Forum aura permis de raviver les cœurs de la communauté PHP francophone !

Toute l'équipe de Monsieur Biz était présente sur les stands de Monsieur Biz et de Sylius. D'ailleurs pour cette édition spéciale nous étions leur soutien.

Notre stand virtuel sur WorkAdventure

Keynote d’ouverture

Cette année cette édition était d’autant plus spéciale car nous fétions les 25 ans de PHP, mais aussi les 20 ans de cette superbe association qu’est l’AFUP.

Nous avons eu également droit à une démo du plugin Sylius Click’n’Collect, qui a permis à plusieurs commerçants de pouvoir mettre rapidement en place un système de retrait boutique durant le confinement, et durant cette période de couvre-feu. Nous utilisons ce plugin sur nos projets Sylius et sommes également contributeurs.

Comment vos applications PHP peuvent-elle être hackées ? - par A.RÖSSI

Les méthodes utilisées par les hackers pour nuire à certains sites Internet sont nombreuses. Antti a profité du Forum PHP pour nous montrer quelques unes de ces méthodes impressionnantes, qu’il est important de prendre en compte lorsqu’un développeur travaille sur ses applications.

Dans un premier temps il nous a montré comment il parvient à injecter des requêtes SQL via des requêtes HTTP. Les failles utilisées pour y parvenir sont souvent difficiles à déceler, tant nous avons l’habitude d’utiliser des frameworks qui ajoutent une couche d’abstraction à nos applications. C’est pour cela qu’il est important de mettre à jour ses librairies afin de garantir à nos clients un maximum de sécurité.

Ensuite il a usé de subterfuges afin de venir exécuter des commandes shell et lancer plusieurs manipulations sur le serveur en utilisant l’injection d’objets dans la désérialisation de fichier PHAR.

Le fichier PHAR est une application PHP complète dans un seul et même fichier. Nous, développeurs, connaissons principalement celui de composer.
En quelques minutes il parvient d’abord à lister les utilisateurs sur le serveur hébergeant l’application. Ensuite il parvient à devenir root et peut lancer tout ce qu’il souhaite en passant par le scheduler. Cela permet de nous rappeler que la gestion des privilèges est très importante ! Et qu’il faut donner uniquement le minimum de droits nécessaires au bon fonctionnement de nos scripts.

Pour finir voici quelques petits conseils :

  • Mettre ses logiciels à jour
  • Ne pas déployer du code que l’on ne comprend pas (Exemple un copier / coller de StackOverflow)
  • Le moins de privilèges possible sur nos applications et sur le serveur
  • Connaître les bases du hacking pour penser “comme un hacker” lors de nos développements

Pour les curieux qui veulent entrer plus dans la technique, Antti propose son “application de test vulnérable” sur Github.

Auto-critique de la revue de code bienveillante - par K.L.TRINH

Ah la review de code, étape par laquelle nombre de développeurs doivent passer ! (Si ce n’est pas encore le cas, faites-le 🙂). Pourquoi ? Les raisons sont multiples :

  • Détecter et corriger des bugs avant mise en production
  • Maitriser l’architecture logicielle
  • Diffuser la connaissance au sein de l’équipe, relire le code permet de savoir ce qui a été modifié sur un projet.
  • Partager la responsabilité, si un problème survient, celui ou celle qui a codé ne peut pas être tenu comme “fautif” car ses collèges ont validé son code.

Mais comment faire une review sans “froisser” ses collègues ? Comment accepter la critique et les retours sur ce que l’on a produit ? Pour cela il faut que la review soit bienveillante, et aussi mettre de côté son égo :
“Vous n’êtes pas votre code.”. Si un bug ou un erreur a été trouvée, il ne faut pas le prendre personnellement, au contraire ! Cela prouve que votre travail d’équipe fonctionne et permet de livrer une application de qualité au client.

Il faut également faire attention aux rapports de force qui peuvent exister au sein d’une équipe (Années d’expériences, parcours d’études, développeur back / front). Ce n’est pas parce que votre collègue a plus d’expérience que vous qu’il a forcécement raison ou fait tout parfaitement. Tout le monde a à apprendre des autres et en faisant de la relecture de code vous découvrirez également des fonctions PHP que vous ne connaissiez pas forcément.

PHP 8: a new version, a new era - par G.CARUSO

PHP 8 sera disponible pour tout le monde le 26 novembre 2020 ! C’est le moment pour nous de voir ce qu’il va apporter de nouveau et ce qu’il faudra modifier dans nos applications pour pouvoir faire la mise à jour.

Mais avant tout, regardons ce qui nous attend pour 2021 au niveau du support des versions de PHP :

  • PHP 7.2 ne sera plus supporté
  • PHP 7.3 n’aura que des mises à jours de sécurité
  • PHP 7.4 bénificiera d’un support actif
  • PHP 8 également 😉

Niveau performances, ne vous attendez pas à une amélioration aussi spectaculaire qu’entre PHP 5 et PHP 7. Ce seront les gros processus qui gagneront en performance.

Niveau fonctionnalités, faisons le tour des principales nouveautés :

  • Union types, un retour de méthode, une propriété ou un attribut peut posséder plusieurs types. Actuellement nous le faisons souvent dans notre PHP doc, mais cela sera supporté directement dans le code PHP (ex : int|float)

  • Mixed type, un retour de méthode, une propriété ou un attribut peut posséder le type mixed.

  • Match, une alternative à Switch bien plus efficace ! Elle est stricte au niveau des comparaisons ('2' !== 2, contrairement à un switch), elle retourne une valeur et peut donc être combinée avec un echo par exemple, et elle renvoie une exception si une valeur envoyée n’est pas “matchée” (À noter qu’il existe toujours l’utilisation de default dans un match).

  • Named arguments, les utlisateurs de PHPStorm ne seront peut-être pas surpris par ce changement car cet IDE affiche déjà le nom des arguments lors de l’auto-complétion. Cette feature permet de faciliter la compréhension des arguments utilisés dans une méthode en les nommant et nous laissant la possibilité de changer l’ordre dans lequel on les utilise.

  • Attributes, afin d’éviter les annotations qui utilisent la PHP Doc, ici nous utilisons une syntaxe directement comprise par PHP. Avant de faire le changement vérifiez bien que les librairies que vous mettrez à jour supportent cette syntaxe !

Merci à tous les contributeurs qui ont permis toutes ces évolutions et qui maintiennent notre merveilleux ecosystème !

Performance : mais que se passe-t-il après le backend ? - par J.P.VINCENT

Lors de votre navigation sur le web, il a déjà du vous arriver de devoir attendre encore quelques secondes avant de voir le contenu complet de votre page. C’est ce que l’on appelle le “Chemin Critique” ou aussi “Speed Index”.

Les principales causes de celui-ci sont le chargement de CSS et de JS qui bloquent le rendu de la page. Dans un premier temps pour améliorer cela vous pouvez utiliser HTTP2, votre serveur et vos utilisateurs n’en seront que satisfaits. Cela ne révolutionnera pas non plus le rendu de votre page, mais permettra d’améliorer le chargement de vos ressources. Le protocole HTTP3 arrivera prochainement et permettra d’améliorer encore un peu plus cette partie.

Une seconde cause est le chargement de ressources externes. Le bon exemple est l’utilisation d’une police “Google”. Une fois que vous avez choisi votre typo favorite, au lieu de l’inclure une URL externe, téléchargez là pour l’inclure dans les ressources de votre application.

N’hesitez pas aussi à analyser les différents bundles JS que vous utilisez et qui sont des dépendances, qui n’apparaissent donc pas directement dans votre code source.

Mais pourquoi faire tout cela ?

Premièrement pour vos utilisateurs, avoir un site rapide vous permettra de les garder sur votre site web.

Deuxièmement pour la société et la planète. Ces raisons vous semblent peut-être trop ambitieuses mais sachez que de nombreuses personnes changent leur terminaux (mobiles, tablettes, PC) car de trop nombreuses applications “rament” dessus. Une personne avec le dernier smartphone ultra puissant verra votre site rapidement, mais la majorité des gens achètent des téléphones aux alentours de 200€ et votre site est potentiellement beaucoup plus lent sur ces appareils si beaucoup de ressources sont chargées et utilisées en front.

Améliorer la performances de vos applications après le backend n’est donc plus du tout à négliger ! Pour cela plusieurs outils sont à notre disposition :

D’ailleurs contactez-nous si vous souhaitez que nous fassions un audit de votre site sur ces sujets là ! Car l’impact SEO peut aussi se faire ressentir !!

Propulser du temps réel avec PHP en 2020 ! - A.BLUCHET

Le temps réel et PHP, il y a plus de 10 ans on en rêvait, désormais cela fait partie de notre quotidien. Et pour y parvenir, plusieurs cordes sont disponibles à notre arc.

  • Ajax Polling : Lancer un appel AJAX toutes les x secondes pour chercher de l’information. Cette méthode fait beaucoup d’aller / retour entre le client et le serveur, souvent inutilement.

  • Ajax long polling : Lancer un appel AJAX et attendre que le serveur aie quelque chose à nous envoyer. L’inconvénient est que nous ne savons pas combien de temps la connexion va être mise en attente.

  • Server-sent event : Une connexion au serveur est établie, puis le serveur envoie des données au client dès qu’il y en a. Cela permet de n’avoir qu’une seule connexion et d’avoir plusieurs réponses. Cette méthode est un standard depuis 2015 et peut-être utilisée avec les EventSource en javascript.

  • Websocket : C’est un nouveau protocole TCP que l’on utilise par dessus HTTP. Il permet une communication bi-directionnelle (Serveur vers client, client vers serveur) et est un standard depuis 2019.

  • Mercure : Basé sur HTTP et les Server-sent event. Il permet une communication bi-directionnelle et la gestion de “topics”.

Et là vous vous dites que pour cela vous allez forcément avoir besoin de javascript pour la gestion de vos évènements ? Eh bien détrompez-vous car des librairies PHP permettant de gérer l’EventSourcing en PHP existent :

25 years of PHP - par Z.SURASKI

Comme nous le disions au début de cet article, PHP fête ses 25 ans ! Dans le milieu informatique, 25 ans c’est juste énorme ! Le speaker Zeev Suraski contribue à PHP depuis PHP 3, première version du langage considérée comme “moderne”.

Si vous ne le saviez pas encore, PHP est codé en langage C et il est super simple à appréhender pour un débutant, mais s’avère aussi très complet pour les plus aguerris ! L’exemple le plus parlant est le fait de pouvoir se passer complètement de typage de variables, mais aussi de pouvoir tout typer au bon vouloir du développeur.

D’ailleurs chez Monsieur Biz nous travaillons au mode “strict”, nous typons dès que cela est possible. Ça nous permet d’éviter des problèmes à l’exécution.

Il permet aussi de gérer beaucoup de choses à la place des développeurs et il le fait bien ! Par exemple il va gérer toutes les allocations mémoires sans fuite. (Bye bye malloc en C).

Il évolue aussi avec son temps. Qui se souvient de PHP quand nous n’avions pas encore d’objet à notre disposition ? Et qui se passerait de composer notre fidèle allié qui gère les dépendances à notre place (La version 2 est sortie ce weekend d’ailleurs ! 🎉).

Une autre force de PHP est sa communauté, qui permet de faire connaitre le langage, remonter des bugs, le maintenir et le faire évoluer ! Justement c’est le sujet du prochain talk 😄.

PHP c’est vous ! et vous pouvez contribuer ! - par P.MARTIN et M.SUPIOT

Comme nous le disions précédemment, PHP est codé en C. Ce qui peut rebuter certaines personnes qui ne connaissent pas ce langage. Mais ne vous inquiétez pas il existe des tas de façons de contribuer à PHP !

  • Reporter les bugs, en utilisant l’extension de debug qui vous donnera des backtraces en C. Si vous ne les maitrisez pas, ces backtraces peuvent être utiles aux personnes auxquelles vous remontez les bugs.
  • Qualifier les bugs, en les reproduisant par exemple, et en montrant le cas de test et sa correction !
  • Tester les futures versions de PHP avant leurs releases officielles
  • Écrire des tests dans le moteur C, les tests sont en PHP donc c’est un langage que vous connaissez 😉
  • PHP fonctionne avec un système de RFC, vous pouvez en créer pour proposer vos améliorations à PHP. Cela implique souvent de coder en C, mais qui sait, cela pourrait aussi être une idée de génie que quelqu’un voudra implémenter ! (Spoiler alert: C’est déjà arrivé).
  • Tester les versions bêta des frameworks pour remonter les bugs voire même en corriger.
  • Contribuer à la traduction française de la documentation de PHP.

En dehors de cela, pour ce langage annoncé mort chaque année alors qu’il fait tourner presque 80% du web, vous pouvez aussi :

  • Donner une contrepartie financière à un contirbuteur (Patreon, Github sponsor, payer un verre, acheter un livre etc.)
  • Faire des conférences en présentiel (Difficile vu le contexte sanitaire), ou en ligne.
  • Organiser un live coding sur Twitch pour partager une expertise.
  • Écrire des articles de blog, de presse écrite ou même un livre entier !
  • Acheter un (ou plein) d’éléphpant(s) !

Contribuer à PHP c’est aussi aider son association française l’AFUP qui fête ses 20 ans !

  • Sous-titrage de vidéos pour l’accessibilité
  • Contribuer au code source du site de l’AFUP (Vous savez quoi ? C’est du PHP ! 😜)
  • Monter une antenne locale, participer aux meetups, aux forums, devenir adhérent(e) etc. Chez Monsieur Biz nous sommes membres depuis de nombreuses années !

Il y a tellement de façons de contribuer à PHP que ce soit en codant, en échangeant, en discutant, que même partager un petit tweet sur une feature ou un resultat de benchmark est une contribution !

Pour les entreprises qui utilisent gratuitement au quotidien ce langage, elles peuvent en retour supporter financièrement la communauté :

  • Sponsoriser un événement comme le forum PHP ! (Comme l’a fait Monsieur Biz à plusieurs reprises !)
  • Pour les plus petites entreprises, sponsoriser un événement local en mettant à disposition une salle, des boissons, de la nourriture). En plus, l’AFUP peut s’occuper de vous trouver des speakers.

Autre moyen de contribuer, et non des moindres : faire de l’Open Source !

Ce n’est pas un mot magique, et derrière ce sont de nombreuses personnes qui prennent de leur temps pour proposer ces applications. Vous pouvez dans un premier temps aider les mainteneurs d’une librairie. D’ailleurs souvent elles sont maintenues par très peu de personnes, et que ce passerait-il si votre librairie favorite disparaissait faute de mainteneurs ? Ensuite, votre enreprise peu aussi vous allouer du temps pour faire de l’Open Source. C’est ce que nous proposons à nos clients chez Monsieur Biz pour que nos développeurs puissent contribuer et faire de l’Open Source.

Voir les slides du talk.

JSON en base de données, manipulons un peu ça - J.VAN BELLE

Depuis fin 2013, PostGreSQL propose à ses utilisateurs des champs de types JSON, à titre de comparaison, nous étions encore en PHP 5.6 à cette époque. Entre temps les fonctionnalités JSON ont évoluées, puis MySQL et MariaDB ont rejoint la course. Tous les SGBD ne se valent pas sur la proposition de feature JSON et globalement PostGreSQL est le plus avancé.

Quand utiliser des champs JSON dans notre base de données ? La réponse à cette question est : Ça dépend ! Selon le cas d’usage, il faut bien réfléchir à l’utilité de ce type de champ et rester pragmatique. Si votre donnée va servir à faire des critères de sélection, vous avez tout intérêt à garder une colonne pour ce champ là. Mais pour un objet qui contient de la données utile pour votre applicatif, vous pouvez la stocker en JSON. Par exemple, toujours selon le contexte, vous pouvez décider de stocker des adresses clients en JSON.

Sur une colonne JSON, vous allez pouvoir ajouter un index sur un champ, cela va utiliser le système de colonne virtuelle, qui permet entre autre de générer une colonne dans une table à partir d’autres colonnes. Vous pouvez aussi manipuler son contenu, lire, chercher, transformer des valeurs (JSON_CONTAINS, JSON_EXTRACT, JSON_UNQUOTE etc.) et l’écrire (JSON_INSERT, JSON_REPLACE etc.).

Il existe beaucoup de méthodes JSON, elles possèdent une syntaxe longue mais également une version courte qui n’est pas très bien documentée pour le moment. Actuellement la meilleure documentation est celle de PostgreSQL.

Jane & Webby ou la vie de mes amies - O.DOLBEAU

Ces dernières années, les API font partie du quotidien des développeurs. Plusieurs outils ont vu le jour afin de nous aider à les mettre en place (Open API, Api Platform, Jane, etc.).

Dans le projet présenté par Olivier, API Platform n’a pas été gardé pour plusieurs raisons :

  • Support limité du support OpenApi Specifications
  • Gérer les collections
  • Gérer des permissions

Certains de ces points sont désormais possibles avec API Platform mais ne l’étaient pas encore au début de ce projet.

En revanche, Jane a été utilisé et se décompose en deux parties :

  • Jane OpenApi qui permet de créer une API à partir de documents Open API
  • Jane AutoMapper qui permet de génerer des classes pour mapper des valeurs d’une classe à une autre

L’utilisation de cette librairie a donc permis de mettre en place des API pour plusieurs modèles de données et ce hyper facilement pour un développeur.

Nous utilisons Jane sur notre plugin de recherche pour Sylius !

Le mot de la fin

Cette édition du Forum PHP était très particulière cette année. Elle n’aurait pas été possible sans le travail extraordinaire réalisé par les bénévoles de l’AFUP, à qui nous envoyons mille mercis et qui chaque année nous proposent des conférences de qualité ! Cette édition a également trouvé un côté plus humain malgrés la distance grâce à WorkAdventure, qui nous a permis de nous balader entre les stands virtuels du forum et discuter avec les personnes que l’on croisait. Merci aussi au speakers qui nous ont partagé leur expérience et leur savoir sur de nombreux sujets plus intéressants les uns que les autres. Et enfin merci à tous les participant·e·s, avec qui nous avons pu échanger sur notre stand et aussi sur les réseaux sociaux !

Photo de groupe sur WorkAdventure à la fin du forum

À l’année prochaine ! (En chair et en os on l’espère).

P.S. Notre tirage pour la tombola pour gagner un éléphpant Sylius sera réalisé dans le courant du mois de novembre ! Nous préviendrons les gagnants par email et sur Twitter !