Skip to content

PHP

Ecosysteme

  • Composer: Package manager
  • Packagist: Repository des packages
  • composer.json: fichier listant les dependances & leur version.

    • composer install lit le composer.json, télécharge les dépendances sur packagist, les met dans un répertoire vendor, et cree un composer.lock pour noter les versions des dépendances installées à l'instant T.
    • composer update met à jour les dépendances à leur dernière version autorisée par le composer.json. change aussi le lock.
  • PSR: PHP Standard Recommendations: conventions de code à respecter

  • SPL: Standard PHP Library: equivalent STL en PHP (structures de données etc)

  • Opcache: cache d'opcode (resulat de la compilation du PHP en bytecode), permet d'accelerer les perf

  • Phpunit: tests unitaires

  • Phpmetrics: metriques de qualité de code
  • Phpdoc: format de commentaire pour generation doc auto
  • Xdebug: debugger

Symfony

Versions

Apparu en 2007, crée par Fabien Potencier.

Symfony est un framework flexible qui permet de créer des sites web "full-stack", des API headless, des applications CLI...

  • Symfony 1: est un des premiers framework MVC "propre" en PHP. Comprend un générateur d'admin.
  • Symfony 2: refonte complète incompatible avec la 1. structure en Bundles. Ajout de la notion de Service. Basé sur un système Request->Response. Pas d'admin generator à la sortie.
  • Symfony 3: evolution de symfony 2.
  • Symfony 4: refonte complète mais compatible avec la 3. retrait du système de Bundles. Nouvelle structure de fichiers.

Notions

  • Bundle: SF2 et SF3: plugins à register dans le code pour ajouter des fonctionnalités. Exemple: EasyAdminBundle, PaginatorBundle... Dans SF2, l'application elle-même devait être mise dans un bundle.
  • Composant: SF2, 3, 4: librairie technique. Symfony est lui-meme un assemblage de plusieurs composants. Exemples Console, Debug, Routing, Security, DependencyInjection, Form...

    • Note: les composants symfony ont enrichi la communauté PHP et sont utilisés aussi dans d'autres framework PHP! Magento, Laravel, EZPublish...
    • Ca veut dire que on peut créer son propre framework juste avec des composants symfony + libs tierces
  • Front Controller: point d'entrée / document index symfony

    • En SF2 et SF3 web/app.php ou web/app_dev.php
    • En SF4: public/index.php
  • Request Flow: à partir de SF2, le framework est basé sur un modèle Request -> Response. L'ordre de traitement est donc toujours le même :

    • Requete est envoyée au Front Controller
    • Le Front Controller appelle le composant Kernel
    • Le Kernel fait appel au composant Routing pour matcher la route et trouver le bon Controller à appeler
    • Le Controller réalise les actions nécessaires et retourne une Response au serveur

Librairies importantes

  • Event System: Event Dispatcher

  • Logging: Monolog

    • Channel: permet d'isoler les logs de façon logique (ex: par feature)
    • Log level: error > warning > info > debug
    • Handler: où sont écrits les logs (ex: fichier, file de messages...)
    • Formatter: comment sont écrits les logs (JSON, HTML?)
  • Templating: Twig

    • Filtre
    • Extension
  • ORM: Doctrine

    • Schema: le SQL de structure de la BDD
    • Entite: les classes PHP qui définissent les trucs à stocker.
    • Annotation: metadata à ajouter dans le docblock pour forcer des comportements ou des mappings
    • Repository: classe qui stocke les résultats d'une recherche sur des objets
    • DQL: langage "sql-like" qui permet de créer des requêtes custom (utile pour l'optimisation)
    • QueryBuilder: methode plus simple d'écrire des requêtes, en mode objet, à base de chaînage d'operations
    • Migrations: fichiers php contenant les modifications du schéma de BDD à appliquer à chaque incrément de version

Pour aller plus loin