AFUP Day 2019 is the new conference organized by AFUP, the French PHP user-group, dedicated to PHP and its ecosystem. On the same day, on Friday, May 17th, the PHP community will attend a full day of talks in three different cities : Lille, Lyon and Rennes. Let's share experiences, let's meet the companies of these areas, let's listen to the best experts in the PHP world !

Friday 17th May 2019

09:00
5
Keynote d'ouverture (10 minutes)

Bienvenue !

09:20
5
Fonctionnement de l'executeur dans la machine virtuelle PHP
Talk by Julien Pauli (40 minutes)

Nous allons voir comment PHP fait pour exécuter notre code, en interne. Ce n'est pas magique, le code de PHP est exécuté dans une machine virtuelle logicielle, codée en utilisant le langage C. C'est globalement la même chose concernant tous les langages interprétés (comme Python, Java, Ruby ou Go). Comment sont gérées les variables ? Les appels de fonctions ? Les boucles ? Nous parlerons des différents exécuteurs, et de la manière dont l'extension OPCache vient optimiser le code avant de le passer à l'exécuteur. Nous donnerons des recommandations et désamorcerons certaines idées reçues. Pour suivre ce sujet, il suffit de connaître le langage PHP et d'avoir des notions globales en programmation. Le but étant de vulgariser pour qu'à la fin on puisse avoir une bonne idée générale sur le fonctionnement interne de la partie la plus complexe et la plus critique du coeur de PHP.

10:05
4
"Retour aux bases": et si on jouait avec Twig, Messenger & Mercure?
Talk by Samuel Roze (40 minutes)

En annonçant Symfony Mailer, Fabien a lancé une idée intéressante : et si on s'intéressait aux "anciennes" technologies et qu'on essayait de les améliorer? Maintenant, tout le monde écrit une API et un front-end React (ou similaire)... pour quelques pages "dynamiques". Est-ce que l'on ne pourrait pas tweaker Twig et utiliser quelques nouvelles technologies Symfony pour faire autrement? ;-)

10:50
5
Retour d'expérience : La migration d'un Zend Framework 1.12 vers Symfony
Talk by Kevin Verschaeve (20 minutes)

MorningCroissant.fr est un site de location de logement longue durée. La première version du site, faite en ZF 1.12 commençait à être de moins en moins maintenable : non testée, code non optimisé, bugs... La refonte devient nécessaire, et le choix s'est dirigé vers Symfony 3 (dernière version majeure au moment du démarrage de la refonte). Nous verrons ensemble quelles sont les étapes qui ont fait de cette migration un succès, presque sans douleur.

11:40
4
Composer : un ami que l'on connait si peu
Talk by Gaël Crispyn (40 minutes)

Tout le monde (ou presque) connait Composer. Tout le monde (ou presque) l'a utilisé pour gérer ses projets. Mais connait-on vraiment ses capacités? Une fois install et update utilisés, que peut-il nous apporter? Passage en revue d'un ami qui nous veut du bien !!

12:25
4
Ensemble vers une IA NEAT plus ultra
Talk by Grégoire Hébert (40 minutes)

Vous entendez parler d'IA depuis quelques temps, mais ça reste obscur pour vous. Comment ça marche, que se cache-t-il derrière ce mot ? Si lire des livres blancs ou des papiers de doctorants, ce n'est pas votre truc, que la doc de tensorflow n'est qu'un gros amas de mots, et si vous avez vu des présentations peu claires utilisant le même vocabulaire sans vraiment vous donner une idée de comment fonctionne et implémenter une IA chez vous ... Cette présentation est faite pour vous. À son issue, vous serez capable de jouer avec une IA, simple, mais qui vous servira de porte d'entrée dans ce beau monde qu'est le machine-learning.

14:45
2
Supercharging queues in Laravel with Horizon
Talk by Freek Van der Herten (40 minutes)

Out of the box Laravel comes with decent support for queues. Laravel Horizon takes this one step further. Horizon is two things: a server side part that adds intelligence to your queues (think autobalancing), and a client side part to see the content of the queues. In this short, practical talk we'll install Horizon into a Laravel app and play around with it.

15:30
3
Symfony Panther : tester vos applis web avec de vrais navigateurs n’a jamais été aussi simple
Talk by Kévin Dunglas (40 minutes)

Que ce soit quelques lignes de jQuery ou des Progressive Web Apps React/Vue.js/Angular complètes, toutes les applications web modernes contiennent du JavaScript. L’écosystème PHP et les frameworks tels que Symfony ou Zend proposent des outils pour réaliser des tests fonctionnels et de bout en bout (E2E), malheureusement ils se contentent d’effectuer des requêtes HTTP (Guzzle, Symfony WebTestCase, Zend Test PHPUnit) et des assertions sur le HTML généré côté serveur (BrowserKit). Ils ne sont pas capables d’exécuter le code JavaScript, de générer du HTML côté client, de tester si un élément est visible ou non, si une boîte de dialogue (alert, prompt) est bien affichée au clic… De plus, ces outils de test ne permettent pas de détecter les éventuels bugs touchant des navigateurs spécifiques. Panther est une toute nouvelle bibliothèque qui permet - grâce au standard WebDriver du W3C - de piloter tous les navigateurs modernes (Chrome, Firefox, Safari, Edge…) directement en PHP pour réaliser des tests fonctionnels et E2E, ou du web scraping. Panther implémente la très pratique API publique du composant BrowserKit de Symfony, ce qui lui permet d’exécuter les tests écrits avec le composant de test fonctionnel de Symfony et les scripts utilisant la bibliothèque de web scraping Goutte sans avoir à les modifier ! De plus, il implémente l’API de PHP WebDriver, et donne accès à toutes les fonctionnalités avancées du protocole du même nom, parmi lesquelles la possibilité d’effectuer des captures d’écran ou exécuter des scripts JavaScript personnalisés dans le contexte d’exécution de la page. Panther s’installe à l’aide d’un simple « composer require » et tout ce dont il a besoin pour fonctionner c’est un navigateur (pas de Selenium ou autre). Il détecte la structure de l’application, lance un serveur web pour la servir, trouve l’installation locale de Chrome ou de Firefox et les démarre en mode « headless » sans qu’aucune configuration ne soit nécessaire ! Il s’intègre également avec les solutions d’intégration continues populaires tel que Travis et fonctionne avec Docker. Encore mieux, il est compatible avec les services SauceLabs et BrowserStack pour tester votre application sur toutes les plateformes mobiles et bureaux possibles et imaginables. Lors de cette présentation, vous découvrirez l’ensemble des capacités du félin et son fonctionnement interne !

16:40
3
Une application sans framework en 2018
Talk by Rodrigue Villetard (20 minutes)

Développer une application sans framework en 2019 ? Hérésie ? Derrière ce titre provocateur, nous verrons comment replacer notre code applicatif au cœur du processus de développement. L’objectif : reprendre le contrôle de notre code pour atteindre une maintenabilité sur plusieurs années. Loin de rejeter les propositions des solutions cadricielles du marché, nous verrons au contraire comment les bonnes solutions peuvent déployer leur valeur tout en permettant à notre code métier de respirer

17:05 Développer sous Sylius en 40 minutes chrono
Talk by Maxime Huran (40 minutes)

Sylius est un framework e-commerce sous Symfony très simple à prendre en main. Ça tombe bien j'ai décidé de vendre ma collection de jeux vidéos, nous allons donc en profiter pour voir le temps d'un talk comment l'utiliser et le personnaliser. Après une brève présentation des fonctionnalités, nous entrerons dans le vif du sujet pour ajouter nos propres développements !

17:50
1
Keynote de clôture (10 minutes)

À bientôt !