Cette année, j’ai participé au PHP Tour organisé par l’AFUP à Nantes. J’avais soumis plusieurs sujets durant le CFP qui n’ont pas été retenus mais qu’à cela ne tienne je n’allais pas louper cet évènement important de la communauté PHP française…

Au premier étage de la Tour Bretagne en plein centre de Nantes, les participants sont accueillis dès 8h avec le sourire par les bénévoles de l’AFUP Je retrouve quelques têtes connues parmis les bénévoles ayant fait le déplacement de Lyon (Adrien Gallou, Florian Ferrière, …) et je commence par un café en regardant tout le monde arriver.

À 9h, Geoffrey Bachelet, ouvre le bal avec la keynote d’ouverture. Un bienvenue amical et un rappel des règles, il ne reste plus qu’à profiter. J’ai suivi les conférences les plus intéressantes pour moi, l’intégralité des vidéos est disponible sur la playlist YouTube dédiée.

Cet article présente les conférences du premier jour et ce que j’ai pu en retirer, si vous avez des remarques ou questions n’hésitez pas à commenter !
Pour le deuxième jour, rendez-vous sur l’article dédié !

Sécurité Web : et si on continuait à tout casser ?

Alain Tiemblo expert sécurité chez BlaBlaCar, nous parle de SHA1, de fuites de données, de hack, d’injection SQL et de Man In The Middle attack. Ces injections sont encore la principale source de hack conduisant à des fuites de données monumentales… Les « prepared statement » sont la solution, il faut les utiliser partout et toujours !

Il revient aussi sur les mots de passe, comment ils sont protégés, comment ils sont échangés et rappel l’importance d’utiliser un gestionnaire de mot de passe comme 1Password, LastPass, KeePass

J’ai découvert Vault un projet de HashiCorp servant de fournisseur d’authentification pour les applications. En effet de plus en plus de clé de sécurité permettent d’échanger entre les différents composants d’une application (API, stockage…) et ces clés ont besoin d’être sécurisées elles aussi… Il agit sous le même principe que SAML, l’application demande les accès nécessaire et c’est l’outil qui lui fournit, elle n’y a pas accès directement… Alain est actuellement en train de le mettre en place chez BlaBlaCar mais c’est complexe…

2 ans avec POMM

Grégoire Hubert, créateur de la librairie Pomm et repenti des ORM depuis 1999 présente les deux dernières années du projet et ses différents rebondissements. J’avais déjà entendu parler de Pomm mais je n’ai jamais eu l’occasion de m’y pencher sérieusement (aussi parce que je n’ai aucun projet utilisant PostgreSQL…).

Cette présentation claire et dynamique m’a permis d’avoir un autre œil sur PostgreSQL et sur les bases de données en général.
Les ORM apportent une couche d’abstraction intéressante, parfois, mais ils sont utilisés par défaut dans la majorité des projets. Comme ces outils se veulent compatibles avec la plupart des moteurs de base de données relationnelles, ils ne peuvent pas gérer toutes les fonctionnalités spécifiques de chacun.
Pomm propose une approche différente en utilisant au mieux les possibilités offertes par PostgreSQL (typage fort, modélisation de données…) pour aller plus loin lorsqu’on choisit ce moteur de BDD, à tester donc !

Dependency injection & Dependency inversion avec PHP

Première conférence en anglais, présentée par James Mallison, lead développeur chez Trivago. Petit tour d’horizon sur l’injection de dépendance, son intérêt et ses avantages. Rien de nouveau de mon côté mais c’est toujours plaisant d’avoir un petit récap sur un point technique important.

James a présenté auryn un injecteur de dépendance récursif simple a intégrer et PHP-DI, développé par Mathieu Napoli.

Une API GraphQL, du Hype à la prod

GraphQL est un outil à la mode avec comme objectif de détrôner REST pour la construction des APIs. Aurelien David, développeur chez Jolicode nous a présenté comment le mettre en place et l’utiliser.

Contrairement à une API REST, il subsiste un unique point d’entrée capable de répondre à une requête complexe. Cette requête définit le schéma de la réponse attendue, c’est donc l’appelant qui demande ce qu’il souhaite et l’API qui lui répond ce qu’il peut. Une approche intéressante car elle est très adaptative et un même point d’entré peut être utilisé pour plusieurs besoins différents sans avoir à recoder quoi que ce soit.

Pour faciliter l’utilisation, un portage de GraphQL a été fait pour PHP : https://github.com/webonyx/graphql-php

Tread Safety en PHP (ZTS)

Julien Pauli expert PHP chez SensioLabs, présente le mode ZTS (Zend Thread Safe) de PHP. Il démystifie aussi le terme de thread, la différence avec un processus et leur intérêt dans le développement aujourd’hui. PHP n’utilise pas de thread (sauf à utiliser l’extension pthreads développée par Joe Watkins) mais peut être exécuté à l’intérieur d’un thread grâce à son mode ZTS.

Une présentation complexe mais intéressante sur le fonctionnement interne de PHP et la gestion du partage d’accès à la mémoire.

PHP The wrong way

Un peu de troll et une bonne session de rigolade, Loïc Piera et Benjamin Clay, développeurs chez JoliCode, nous montrent avec humour le code pourri auquel ils peuvent être confrontés chez des clients (aucun nom bien sur) en développant en live le petit projet de blog d’un certain Taylor…

Des applis PHP 15 fois plus rapides

Serge Hardy et Fabien Paitry nous font une petite présentation du projet PHP Process Manager, qui promet une augmentation de performance incroyable en utilisant ReactPHP. Le sujet était intéressant mais la présentation était un peu légère, je reste sur ma faim. Dommage que les conférenciers n’aient pas plus creusés et ce soit limité à des tests sur un simple « Hello World » dans un projet Symfony.

Le gain annoncé n’est pas aussi important que celui mesuré mais les benchmarks réalisés manquent un peu de profondeur pour être pertinents.

Tagua VM, a safe PHP virtual machine

Tagua VM est une machine virtuelle expérimentale pour PHP, autant dire un nouveau moteur d’interprétation du langage. Ce projet a pour objectif de proposer une alternative au Zend Engine, moteur historique de PHP, et à HHVM (HipHop VM) développé par Facebook et permettant aussi d’exécuter le langage Hack.
Développé en Rust et s’appuyant sur LLVM, TaguaVM veut garantir sécurité et qualité tout en apportant une suite d’outil plus poussée (débugger, analyseur syntaxique…). Rust, très prometteur sur la sécurité de la gestion mémoire et des threads est une base fiable pour développer cette VM.

Ivan Enderlin, nous présente le projet sa philosophie et son écosystème. Cette présentation était vraiment très motivante sur l’avenir de PHP et ce que la communauté peut apporter. De plus le détail sur la structure interne de la machine virtuelle et l’analyse du langage avant exécution était vraiment très intéressants.
La roadmap prévoit une version stable d’ici 2 ans environ mais l’approche très modulaire choisie nous permettra peut être de voir sortir un parser nouvelle génération bien plus tôt, à suivre !

OPCode ? Mais à quoi ça sert ?

Benoit Jacquemont, directeur technique de la société Akeneo nous présente OPCode (language simplifié interprété par Zend Engine). C’est toujours intéressant de voir comment PHP est réellement transformé et interprété par le serveur. La petite note sur le cache d’OPCode permet aussi de connaître les différentes optimisations intégrées dans le langage depuis la version 5.5.

Une présentation accessible et intéressante avec des exemples simples mais explicite d’OPCode et d’optimisations appliquées.