PHP Expert : Optimisation et industrialisation d'applications
Quels sont les buts de la formation ?
Programme de la formation
Rappel: histoire de PHP
Les nouveautés de PHP7, PHPNG et HHVM
Principe d'architecture
Protocole centrée: présentation de PSR7, ReST et HATEOAS
MVC, découpler le domaine de l'applicatif
Plus de découplage: Interface based programming
Encore plus de découplage: microservices
Injection de dépendances
Frameworks
Les full-stack MVC framework: présentation de Symfony et Zend
Un composant classique l'ORM:
Les frameworks allégés: exemple de Silex
Paradigme collaborationiste et suppression des frameworks
Gestion des logs
Rappels: logs natifs de PHP
PSR-3: Logger-interface
Une implémentation: Monolog
Les processeurs (introspection, memory usage, ...)
Les formateurs (html, ChromePHP, ...)
Les wrappers (Buffer, Filter, FingersCrossed, ...)
Atelier : Mettre à disposition un logger à notre application
Les environnements de développements
Environnement AMP local
Le serveur HTTP embarqué de PHP5
Virtualisation, gérer les déploiements avec vagrant
Virtualisation, moduler les dépendances avec Docker
Atelier : Créer un lanceur de serveur de développement
Monitoring et Profiling
Monitoring : que surveiller ?
Présentation d'un outil tel que Monit
Profiling : xDebug, Xhprof et Xhgui
Profiling dans un framework : Symfony WebProfilerBundle
Profiling via un service externe : Blackfire
Test de montée en charge avec Apache Bench
Atelier : Profiler notre application
Outils de développement
Système de contrôle de version (VCS) : SVN, Git
Gestion des branches
Documentation : PHPDoc
Environnement de développement intégré (IDE)
Fichier de configuration, les formats Yaml, XML, json
Chargeur de configuration
Inspecter le source : PHPStorm inspector, Sensio Insight
Optimiser l'écriture du code
Convention de code :PSR-1, PSR-2
Principes du développement SOLID
Vérifier les conventions : phpcpd, php-cs-fixer ...
Optimiser l'exécution
Outils d'optimisation / qualité de code
Erreurs courantes, solutions
Compression à la volée
Optimisation des algorithmes
Optimisation de la couche d'accès aux données: memcached
Cache HTTP, directives cache-control
Cache HTTP sur un reverse-proxy, présentation d'outils
Atelier : Multiples scénarios d'optimisation de code