Esc
 Naviguer  Ouvrir Esc Fermer
Aller au contenu

Parcours PHP

Confirmé 20 min prérequis : axes 5-7 + 8.0 lus

🎯 Objectif : choisir entre PHP natif, Laravel et Symfony selon le contexte. PHP 8.4 est moderne, performant et reste le langage backend le plus déployé au monde (~75 % des sites web).

À l'issue de cet axe, tu sauras :

  • Comprendre l'évolution récente de PHP (8.x → 8.4) et ses caractéristiques modernes
  • Maîtriser Composer (le gestionnaire de paquets PHP)
  • Distinguer Laravel et Symfony sur 5 critères clés
  • Choisir entre PHP-FPM derrière Nginx, Frankenphp, ou serveur applicatif
  • Connaître les outils 2026 : PHPUnit / Pest, Xdebug, Laravel Pint / PHP-CS-Fixer
PourContre
75 % du web tourne en PHP (WordPress, Shopify, Wikipedia, Slack…)Réputation injuste de « langage poussiéreux » — alors que PHP 8.x est moderne
Hébergement ultra-bon marché (mutualisé < 5 €/mois)Beaucoup de code legacy à maintenir dans l’écosystème
Frameworks ultra-mûrs : Laravel 2011, Symfony 2005Moins « hype » que Node ou Python — talent pool junior plus restreint
Productivité massive : Laravel/Symfony livrent en jours ce qui prend semaines ailleursAsync limité (mais ReactPHP, Swoole, Frankenphp existent)
Marché de l’emploi énorme et stableImage dégradée injustement — les recrutements jeunes sont parfois durs

Verdict 2026 : PHP est un excellent choix pour un CMS, un e-commerce, un SaaS classique. Pas pour de l’edge ou du temps réel intense (mais possible avec Frankenphp/Swoole).

PHP a été révolutionné depuis la 7.0 (2015) et continue. Aperçu :

VersionSortieApports clés
7.0 (2015)Performance ×2, types scalaires
7.4 (2019)Typed properties, arrow functions
8.0 (2020)JIT, named arguments, attributs, match, nullsafe ?->
8.1 (2021)Enums, readonly, never type
8.2 (2022)Readonly classes, types disjonctifs
8.3 (2023)Typed class constants, json_validate
8.4 (2024)Property hooks, asymmetric visibility, deprecate functions

PHP 8.4 reste en active support jusqu’au 31 décembre 2026. Cible 8.3+ pour les nouveaux projets.

<?php
declare(strict_types=1);
namespace App\Domain;
enum TaskStatus: string
{
case Pending = 'pending';
case Done = 'done';
case Archived = 'archived';
}
readonly class Task
{
public function __construct(
public int $id,
public string $title,
public ?string $description,
public TaskStatus $status,
public \DateTimeImmutable $createdAt,
) {}
public function isCompleted(): bool
{
return $this->status === TaskStatus::Done;
}
}
// Usage
$task = new Task(
id: 1,
title: 'Apprendre PHP 8.4',
description: null,
status: TaskStatus::Pending,
createdAt: new \DateTimeImmutable(),
);

C’est du PHP — typé strict, immutable, enums, named arguments. Loin des stéréotypes.

Composer gère les dépendances PHP. C’est l’équivalent de pip/npm.

Fenêtre de terminal
# macOS / Linux / WSL
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
# Windows : installeur depuis getcomposer.org
Fenêtre de terminal
composer init # nouveau projet → crée composer.json
composer require monolog/monolog # ajouter une dépendance
composer require --dev phpunit/phpunit # dépendance dev
composer install # installer depuis composer.lock
composer update # mettre à jour
composer dump-autoload # régénérer l'autoloader
{
"name": "vendor/projet",
"type": "project",
"require": {
"php": "^8.3",
"guzzlehttp/guzzle": "^7.9"
},
"require-dev": {
"phpunit/phpunit": "^11.0"
},
"autoload": {
"psr-4": { "App\\": "src/" }
}
}

Autoload PSR-4 : App\Domain\Tasksrc/Domain/Task.php automatiquement. Plus aucun require_once à écrire.

CritèrePHP natifLaravel 12Symfony 7.4 LTS
StyleTu codes tout”Batteries-included”, DSL LaravelModulaire (bundles), opinion forte
Productivité CRUDFaible (à toi de tout coder)Excellente (artisan, Eloquent, Blade)Excellente (API Platform, Twig)
Courbe d’apprentissageFaible (langage seul)MoyennePlus élevée
PerformanceMaximaleBonneBonne
MarchéNiche (WordPress)Énorme (startups, agences)Énorme (entreprise, banques, gouvernements)
Cas typiqueMicroservice, plugin WPSaaS, e-commerce, app rapideGros projet long-terme, équipes nombreuses
Si tu veux…Choisis
Un SaaS rapide, équipe < 10 devs, MVP en 2 moisLaravel
Un projet enterprise long-terme, équipe > 10 devs, architecture stricteSymfony
Un microservice ciblé, un script webPHP natif
Un CMS / blogWordPress ou Statamic (Laravel-based)
FrameworkVersion courantePHP min
Laravel 12 (LTS)janvier 2025PHP 8.2+
Laravel 13mars 2026PHP 8.3+
Symfony 7.4 (LTS)novembre 2025PHP 8.2+
Symfony 8.0novembre 2025 (avec 7.4)PHP 8.4+
SolutionAvis
Mutualisé (OVH, IONOS)Ultra-bon marché, idéal débutant — Apache + PHP-FPM auto
VPS (DigitalOcean, Hetzner)Nginx + PHP-FPM, contrôle total
Forge (Laravel)Provisionne et déploie automatiquement sur ton VPS, sweet spot pour Laravel
Vapor (Laravel + AWS Lambda)Serverless Laravel, scale-to-zero
PaaS (Render, Railway, Platform.sh)Déploiement Git-driven
FrankenphpServeur PHP moderne tout-en-un (basé Caddy), worker mode pour Symfony/Laravel

Frankenphp est un serveur PHP moderne qui :

  • Inclut Caddy (HTTPS automatique).
  • Lance PHP en worker mode : code chargé en mémoire entre requêtes (Laravel Octane / Symfony Runtime).
  • Supporte HTTP/3.
  • Conteneur Docker prêt à l’emploi.
Fenêtre de terminal
docker run -p 80:80 -p 443:443 -v $PWD:/app dunglas/frankenphp

Pour la prod 2026, Frankenphp + worker mode = 3 à 10× les perfs d’un PHP-FPM classique.

CatégorieOutil
Lint / formatLaravel Pint (Laravel-friendly) ou PHP-CS-Fixer
Static analysisPHPStan (level 1-9) ou Psalm
TestsPHPUnit 11 (standard) ou Pest (DSL plus expressif)
DebugXdebug + extension VS Code
ProfilerBlackfire, Tideways
Fenêtre de terminal
# Stack moderne 2026 d'un projet Laravel/Symfony
composer require --dev phpunit/phpunit phpstan/phpstan laravel/pint

PHP est traditionnellement synchrone. Mais :

  • ReactPHP (event loop) — niche.
  • Swoole (extension C) — utilisé par certains frameworks asynchrones.
  • Laravel Octane — lance Laravel sur Swoole/RoadRunner/FrankenPHP, ×3-10 perfs.
  • Symfony + Frankenphp worker mode — équivalent côté Symfony.

En 2026, la plupart des projets PHP restent en mode requête-réponse classique. Pour des perfs très élevées sans changer de langage, Frankenphp est la voie privilégiée.

L’exercice de référence sera implémenté en Laravel 12 (productivité maximale, le plus utilisé). Si tu choisis Symfony, suis la doc API Platform avec un schéma équivalent.

📁 Code : exercises/08-backend/03-php/laravel/taskly-api/

Tu démarres un SaaS en 2026 avec une équipe de 3 devs PHP. Choix idéal ?
Tu hérites d'un projet Laravel 11 en avril 2026. Quel impact ?
Tu veux multiplier par 5 les perfs d'une app Laravel sans réécrire. Solution moderne 2026 ?

Choisis ton sous-parcours :