Le forum PHP 2020 s’est tenu cette année en ligne pour s’adapter au contexte actuel. Il n’en a pas été moins intéressant puisque plus de 30 conférences ont été tenues sur 2 jours. L’AFUP fêtait cette année ses 20 ans, et Dedi a eu la chance d’être sponsor de l’événement 2020 ! Dans cet article, nous vous emmenons au cœur du forum avec 5 points à retenir de ces deux journées.
La conférence présentée par Gabriel Caruso, Release Manager de la version 8 de PHP, nous présente les évolutions à venir pour cette nouvelle version. Pour rappel, la sortie de cette mise à jour est prévue pour le 26 novembre 2020. Il convient donc de se tenir informé pour prendre avantage des nouveautés de cette version.
Parmi les évolutions, l’ajout des Union Types permet aux développeurs de rendre leurs algorithmes plus robustes grâce à un typage fort. Les vérifications de type manuell peuvent être oubliées au profit des Union Types natif au langage.
La nouvelle expression Match inspirée d’autres langages, introduit une syntaxe similaire à l’expression Switch avec une sémantique plus courte et la possibilité de retourner une valeur.
Les arguments nommés (Named Arguments), permettent une meilleure clarté dans le code. Ils seront particulièrement utiles lors de la création de DTO (Data Transfer Object) ou encore lorsque l’on souhaite passer seulement certains paramètres optionnels à une méthode.
Les attributs peuvent être vus comme un système similaire aux annotations Doctrine, mais qui sont natifs au langage. Cela signifie que les attributs pourront être mis en cache et seront plus rapidement interprétables par le langage. De plus, de nouvelles méthodes de réflexion ont été ajoutées pour accéder aux attributs définis.
PHP est dorénavant plus performant grâce à l’introduction de JIT (Just In Time). Cette nouveauté aura un impact principalement sur les processus les plus lourds. On peut donc imaginer utiliser PHP pour des tâches toujours plus complexes.
À noter que plusieurs Breaking Change sont introduits avec le passage en version 8 de PHP, notamment les fonctions dépréciées en PHP 7.x qui ne seront plus disponibles. Ainsi, la montée en version de vos applications nécessitera probablement des évolutions de code.
Conférence PHP 8: a new version, a new era, tenue par Gabriel Caruso.
Voir le replay ici.
ElasticSearch est un logiciel très utilisé pour l’indexation et la recherche de données et qui est basé sur Lucene.
Elasticsearch doit être vu comme un simple outil puisqu’il s’agit uniquement d’une base de données contenant des documents. Il faut le voir comme “un store de documents, tel qu’un ODM ». Elasticsearch expose une API REST qui permet d’interroger les documents stockés.
ElasticSearch n’est finalement qu’une petite brique. Il ne faut pas s’en servir comme une base de données classique puisqu’il ne respecte pas les principes ACID. Il n’est pas destiné à gérer le stockage de données sur le long terme.
Plusieurs packages PHP existent et permettent d’exploiter ce potentiel avec ElasticSearch :
Nous pouvons utiliser les DTOs pour optimiser la gestion en OOP et suivre le flux de requêtes et de réponses. JANE est un autre package pour gagner du temps : il génère automatiquement des DTOs.
La sérialisation et la normalisation seront faites systématiquement en utilisant les DTOs. En effet, une hydratation de ces derniers va permettre de pouvoir exploiter via de l’OOP les informations récupérées d’ElasticSearch. Nous pourrons ainsi facilement passer à nos services Symfony nos DTOs fraîchement hydratés et en faire les traitements souhaités par la suite.
Pour conclure, la stack parfaite est selon Damien Alexandre :
Dedi l’intègre petit à petit à ses projets de refonte. Il commence à être présent sur nos Sylius grâce aux plugins de BitBatCommerce et MonsieurBiz pour la gestion des filtres à facette sur les sites e-commerce.
Nous utilisons également Elasticsearch pour l’indexation des logs applicatifs que nous affichons grâce à Kibana.
OAuth2 est un protocole de délégation d’autorisation mettant en relations plusieurs acteurs qui sont : le “Ressource Owner” (le propriétaire de la ressource), le “Ressource Server” (celui qui détient la donnée sécurisée) et l’”Authorization Server” (celui qui délivre l’autorisation d’accès).
Les acteurs s’échangent des pairs de jetons pour notifier leurs autorisations.
Il existe deux jetons : l’”Access Token” qui possède une durée de vie courte et est la preuve d’une autorisation. Et le “Refresh Token” qui possède une durée de vie plus longue et qui permet de faire la demande d’un nouveau jeton d’accès sans devoir refaire le protocole depuis le début.
Plusieurs stratégies de connexion existent en fonction de la nature des acteurs (machine à machine, personne physique etc …), ce sont les “Grants.” Il est fortement recommandé d’utiliser le “Grant” “Autorization Code” pour sa grande sécurité.
La plus grande problématique de Oauth2 est qu’il ne permet pas de savoir avec certitude qu’un utilisateur est bien connecté. Ainsi le rôle de Oauth2 n’est pas de faire de la connexion d’utilisateur.
C’est une surcouche au protocole OAuth2 qui permet l’authentification unique, fréquemment utilisée pour faire du SSO. Elle délivre à un utilisateur authentifié un “Id Token” portant l’identité de celui-ci.
Tout comme OAuth2, il existe plusieurs stratégies de connexion, mais comme pour OAuth2 il est fortement conseillé d’utiliser la stratégie “Authorization Code”.
Open ID permet aussi l’accès offline et la gestion par session.
Pour conclure, l’Oauth2 sert à faire de la délégation d’autorisation alors qu’Open ID permet de s’authentifier fournissant ainsi deux solutions complémentaires basées toutes deux sur les mêmes mesures de sécurités.
Conférence de Karim Penchon, OpenId Connect.
Lire aussi | Quels sont les enjeux du Domain Driven Design pour votre projet ?
Antoine BLUCHET a présenté plusieurs points sur lesquels il est intéressant de s’attarder.
Le long polling permet au client d’envoyer une requête au serveur qui ne répondra qu’en cas de changement de données.
C’est un protocole simple qui présente plusieurs éléments :
Il permet du bi directionnel combiné avec le protocole mercure.
Le web socket est standard depuis 2019 :
Il possède une spécification basée sur http et Server Sent Event permettant :
Lire aussi | Sylius 1.8, les nouveautés de cette dernière version
La revue de code permet de contrôler la qualité du code par la détection de bug par anticipation et de maîtriser l’architecture logicielle pour qu’elle soit adaptée au projet et maintenable sur le long terme.
Elle diffuse également les connaissances entre les développeurs et partage les responsabilités entre plusieurs personnes.
L’important pour faire une bonne revue de code est d’être bienveillant. Par bienveillant, on entend se concentrer sur le code uniquement et non sur les relations personnelles qu’on entretient avec la personne. Une critique sur votre code n’est pas une critique de vous-même, il ne faut pas la prendre personnellement.
Mais cela suffit-il ? En réalité, la société se construit sur des bases mises en place par les personnes privilégiées, et cela engendre ce qu’on appelle de la discrimination systémique.
Ce n’est pas une discrimination issue d’un point de vue personnel, mais une discrimination plus insidieuse, qui repose sur le fait que les personnes privilégiées construisent des éléments pour des gens avec les mêmes besoins qu’eux, puisqu’ils n’ont pas conscience des besoins des personnes sans ces privilèges.
Un bon exemple pourrait être le manque d’accès en ville pour les personnes à mobilité réduite, ou l’accessibilité des sites internet pour les personnes malvoyantes. Nous avons mis du temps à instaurer des accès aux bâtiments pour les personnes à mobilité réduite car les personnes qui pensent ces constructions sont en majorité valides, et ne pensent pas naturellement aux problématiques qu’un fauteuil roulant pourrait poser.
Les privilèges ne s’arrêtent malheureusement pas à la porte des entreprises, ils sont présents tous les jours dans la vie des développeurs et jouent un rôle dans leurs interactions.
Par exemple, et sans en faire une liste exhaustive, les années d’expérience vs ceux qui sortent tout juste d’école, ceux qui ont fait des études vs les autodidactes, les développeurs back end vs les développeurs front end, sont autant de catégories différentes de personnes pouvant créer de la discrimination.
Pour pallier les discriminations qui naissent, nous pouvons faire de la revue de code empathique en plus d’être bienveillante.
Cela inclut de s’assurer que toutes les personnes de l’équipe :
Il est important de laisser assez de place à ceux qui ont moins de privilèges, ou sont perçus comme ayant moins de privilèges, afin qu’ils puissent également évoluer et progresser.
Beaucoup d’informations ont été échangées au cours de ce forum et nous espérons avoir résumé les plus marquantes de cette année. Dedi est fier d’avoir participé à ce salon digital en tant que sponsor, et espère vous revoir l’année prochaine.
Découvrez Dedi, l’agence qui ne crée pas seulement des sites internet
Les réseaux sociaux ne sont plus de simples plateformes d’échanges : ils sont devenus de…
Les publicités évoluent, le marketing s’adapte, et nous l’avons compris, l’utilisateur est au cœur de…
La transformation digitale est un sujet de longue date dont la nécessité s’est accélérée pendant…
Le secteur du digital est un grand adepte des acronymes : SEO, CMP, KPI… Parmi…
Quel est l’état du marché du e-commerce en 2024 et quels horizons sont à prévoir…
Shopify offre un écosystème riche d'applications compatibles, conçues pour personnaliser et optimiser votre boutique en…