Fibers

PHP 🔴 Senior

Définition

Primitive de concurrence introduite en PHP 8.1 permettant de suspendre et reprendre l'exécution d'un bloc de code. Base des frameworks asynchrones comme Revolt.

Analogie

Comme mettre un livre en pause avec un marque-page pour en lire un autre, puis reprendre exactement ou on s'était arrêté.

Exemple de code

$fiber = new Fiber(function (): void {
  $value = Fiber::suspend('paused');
  echo "Repris avec: $value";
});
$result = $fiber->start(); // 'paused'
$fiber->resume('hello');

Cas d'usage

Pour construire des bibliothèques asynchrones ou des event loops sans callbacks imbriques.

Anti-pattern

Utiliser les Fibers directement en application au lieu de passer par un framework async.

Termes liés

#advanced#php8

← → au clavier pour passer d'une fiche à l'autre