Chapitre 24
24 — Tendances PHP 2024-2026
24 — Tendances PHP 2024-2026
Tendances PHP 2026+
Introduction
PHP n'a jamais été aussi moderne. Après des années perçues comme un langage "legacy", PHP a opéré une transformation radicale depuis PHP 7.0 (2015). Avec PHP 8.x, le langage rivalise avec les meilleurs en termes de fonctionnalités, performance et sécurité.
Ce chapitre explore les tendances qui façonnent l'avenir de PHP et comment se positionner pour les 5 prochaines années.
1. PHP 8.4 : Property Hooks et Asymmetric Visibility
PHP 8.4 introduit deux fonctionnalités majeures.
Property Hooks
class User
{
public string $name {
set => ucfirst(strtolower($value));
get => $this->name ?? 'Anonymous';
}
public string $email {
set (string $value) {
if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
throw new InvalidArgumentException('Email invalide');
}
$this->email = $value;
}
}
}
Asymmetric Visibility
class Invoice
{
public private(set) string $id; // Lecture publique, écriture privée
protected public(set) float $total; // Lecture protégée, écriture publique
public function __construct()
{
$this->id = uuid_create();
}
}
Impact : Élimine le besoin de getters/setters manuels. Réduit le boilerplate de ~60% pour les DTO et Value Objects.
2. FrankenPHP : Le Serveur PHP Moderne
FrankenPHP est un serveur d'application PHP écrit en Go, créé par Kévin Dunglas (créateur d'API Platform).
Architecture :
┌─────────────────────────────┐
│ FrankenPHP │
│ ┌───────────────────────┐ │
│ │ Go Server │ │
│ │ (net/http, Caddy) │ │
│ ├───────────────────────┤ │
│ │ PHP Worker Pool │ │
│ │ ┌───┐ ┌───┐ ┌───┐ │ │
│ │ │P1 │ │P2 │ │P3 │ │ │
│ │ └───┘ └───┘ └───┘ │ │
│ ├───────────────────────┤ │
│ │ Built-in Features │ │
│ │ - HTTP/2, HTTP/3 │ │
│ │ - Mercure (SSE) │ │
│ │ - TLS auto (Caddy) │ │
│ │ - Compression │ │
│ └───────────────────────┘ │
└─────────────────────────────┘
Avantages :
- Démarrage instantané (pas de FPM)
- Auto TLS via Caddy (Let's Encrypt)
- Push SSE via Mercure intégré
- Mode worker natif (une instance PHP persistante)
- Compatible Symfony, Laravel, API Platform
FROM dunglas/frankenphp:latest
COPY . /app
RUN frankenphp php-cli composer install --no-dev
CMD ["frankenphp", "run"]
3. NativePHP : PHP Desktop Apps
NativePHP permet de créer des applications de bureau avec PHP et Laravel, en utilisant Electron sous le capot (ou Tauri récemment).
// app/Native/Controllers/MainWindow.php
use Native\Laravel\Facades\Window;
class MainWindow
{
public function show(): void
{
Window::open()
->title('Mon App Desktop')
->size(1200, 800)
->route('dashboard')
->show();
}
}
Cas d'usage : Applications internes d'entreprise, outils de développement, POS systèmes.
4. Async PHP avec Revolt
Revolt est une bibliothèque d'event loop pour PHP, utilisée par Laravel Octane, Amp, et ReactPHP.
use function Revolt\EventLoop;
$timer = EventLoop::delay(1, function () {
echo "Exécuté après 1 seconde\n";
});
// Async HTTP avec amphp/http-client
$client = new Amp\Http\Client\HttpClientBuilder::build();
$response = $client->request(new Amp\Http\Client\Request('GET', 'https://api.example.com'));
$body = $response->getBody()->buffer();
Avec PHP 8.1+ et Fibers, l'async devient plus accessible :
$fiber = new Fiber(function (): void {
$result = Fiber::suspend(fetchFromApi());
processResult($result);
});
5. Laravel Reverb : WebSocket Natif
Reverb est le serveur WebSocket first-party de Laravel, remplaçant Pusher pour le broadcasting.
// config/broadcasting.php
'connections' => [
'reverb' => [
'driver' => 'reverb',
'key' => env('REVERB_APP_KEY'),
'secret' => env('REVERB_APP_SECRET'),
'app_id' => env('REVERB_APP_ID'),
'options' => [
'host' => '0.0.0.0',
'port' => 8080,
],
],
],
Performance : Reverb gère des centaines de milliers de connexions simultanées avec une empreinte mémoire minimale.
6. AI/ML en PHP
L'IA générative n'est plus réservée à Python. L'écosystème PHP s'enrichit :
LLPhant : Bibliothèque PHP pour interagir avec les LLM (OpenAI, Anthropic, Ollama)
use LLPhant\Chat\OpenAIChat;
use LLPhant\Embeddings\OpenAIEmbeddingGenerator;
$chat = new OpenAIChat();
$response = $chat->generateText('Explique SOLID en PHP avec des exemples');
// RAG (Retrieval Augmented Generation)
$embeddings = (new OpenAIEmbeddingGenerator())->embedText($document);
OpenAI PHP SDK :
$client = OpenAI::client($apiKey);
$result = $client->chat()->create([
'model' => 'gpt-4o',
'messages' => [
['role' => 'system', 'content' => 'Tu es un expert PHP.'],
['role' => 'user', 'content' => 'Génère un contrôleur Laravel pour une API REST'],
],
]);
7. PHP + WebAssembly
PHP peut maintenant compiler vers WebAssembly, ouvrant des cas d'usage côté client :
# Compiler PHP en WASM
docker run -it --rm -v $(pwd):/app wasmphp/php:8.3 php -v
# Utiliser PHP Wasm dans le navigateur
const php = await PHPWebAssembly.create();
const result = php.run('<?php echo "Hello from WASM!";');
Cas d'usage : Plugins WordPress en WASM, exécution sécurisée de code PHP, sandboxing.
8. Platform Engineering PHP
L'essor des Internal Developer Platforms (IDP) arrive aussi dans l'écosystème PHP :
- Laravel Cloud : Platform as a Service de Laravel (similaire à Vercel)
- Laravel Forge API : Automation de provisioning
- Docker + Laravel Sail : Standardisation des environnements
┌─────────────────────────────────────┐
│ Internal Developer Platform │
│ ┌─────────┐ ┌──────────┐ ┌──────┐ │
│ │Laravel │ │Laravel │ │ CI/CD│ │
│ │Cloud │ │Forge │ │GH │ │
│ ├─────────┤ ├──────────┤ ├──────┤ │
│ │Horizon │ │Reverb │ │Pulse │ │
│ │(Queues) │ │(WS) │ │(Perf)│ │
│ └─────────┘ └──────────┘ └──────┘ │
└─────────────────────────────────────┘
9. Performance : Laravel Octane et FrankenPHP
Octane + RoadRunner :
// config/octane.php
'server' => 'roadrunner',
'llisten' => 8000,
'max_requests' => 500,
Les performances comparées (requests/sec) :
| Stack | Requests/sec |
|---|---|
| PHP-FPM + Nginx | 1x (baseline) |
| Laravel Octane + RoadRunner | 5-10x |
| Laravel Octane + Swoole | 8-15x |
| FrankenPHP | 10-20x |
| Native PHP Worker | 3-5x |
10. Évolution de l'Écosystème
Filament 3
Filament est devenu le standard pour les panneaux d'administration Laravel :
class BlogPostResource extends Resource
{
protected static ?string $model = BlogPost::class;
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('title')->required(),
RichEditor::make('content'),
Select::make('status')->options([
'draft' => 'Brouillon',
'published' => 'Publié',
]),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('title')->searchable(),
BadgeColumn::make('status'),
])
->filters([...])
->actions([...]);
}
}
Laravel Pulse
Monitoring production intégré :
// app/Providers/AppServiceProvider.php
Pulse::user(fn ($user) => [
'name' => $user->name,
'avatar' => $user->avatar,
]);
Pulse::record('performance', 'slow_queries', $duration)
->with(['query' => $sql, 'bindings' => $bindings]);
11. Symfony 7+ : Adapterless Architecture
Symfony 7 simplifie radicalement la configuration :
// Avant Symfony 6 (adapters requis)
// config/packages/mailer.yaml
framework:
mailer:
dsn: '%env(MAILER_DSN)%'
// Symfony 7+ (auto-configuration)
// .env
MAILER_DSN=smtp://user:pass@smtp.example.com:587
// Symfony 7+ utilise directement les DSN sans configuration YAML
12. PHP et l'Edge Computing
PHP commence à s'implanter sur l'edge avec des solutions comme :
- Laravel Vapor : Serverless sur AWS Lambda
- Bref : PHP serverless sur AWS Lambda
- FrankenPHP : Déploiement edge-ready
# vapor.yml
id: 12345
name: my-app
environments:
production:
memory: 1024
cli-memory: 512
runtime: 'php-8.3:al2'
database: my-db
queues:
- my-queue
scheduler: true
Résumé : La Stack PHP 2026
┌────────────────────────────────────────────┐
│ Application Layer │
│ Laravel 12 / Symfony 7 / API Platform │
├────────────────────────────────────────────┤
│ Presentation │
│ Livewire 3 + Alpine.js / Filament 3 │
├────────────────────────────────────────────┤
│ Server │
│ FrankenPHP / Octane (RoadRunner) / FPM │
├────────────────────────────────────────────┤
│ Queue / Events │
│ Horizon / Reverb (WebSocket) / Messenger │
├────────────────────────────────────────────┤
│ Database │
│ PostgreSQL 17 + Redis 7 + Meilisearch │
├────────────────────────────────────────────┤
│ Infrastructure │
│ Docker / Laravel Vapor / Forge │
├────────────────────────────────────────────┤
│ Monitoring │
│ Pulse / Sentry / Laravel Cloud │
└────────────────────────────────────────────┘
PHP n'a jamais été aussi performant, moderne et agréable à utiliser. Les avancées du langage (JIT, Fibers, types) combinées à l'écosystème (Laravel, Symfony, FrankenPHP) en font un choix de premier ordre pour le développement web en 2026.