# Opérateur de fusion nulle

> Syntaxe « ?? » qui renvoie la valeur de gauche si elle existe et n'est pas nulle, sinon la valeur de repli indiquée à droite.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/operateur-fusion-nulle/

Avant PHP 7, tester qu'une variable existait avant de l'utiliser demandait souvent une combinaison verbeuse d'`isset()` et d'opérateur ternaire, du genre `isset($tab['cle']) ? $tab['cle'] : 'defaut'`. L'opérateur de fusion nulle condense cette vérification en un seul symbole, plus court et plus lisible.

## Syntaxe

L'écriture `$valeur = $tableau['cle'] ?? 'defaut';` revient à dire : « prends `$tableau['cle']` si elle est définie et non nulle, sinon prends 'defaut' ». Depuis PHP 7.4, la variante `??=` permet d'assigner une valeur uniquement si la variable est encore nulle : `$options['langue'] ??= 'fr';`.

## Dans WordPress

Cet opérateur est très employé pour lire des paramètres de requête ou des champs de formulaire sans déclencher d'avertissement : `$page = $_GET['page'] ?? 1;`. Il remplace avantageusement les anciens appels à `isset()` qu'on trouve encore dans le code plus ancien du cœur de WordPress et de nombreuses extensions.

## Exemple

```
function wpm_titre_options(array $args): string {
    return $args['titre'] ?? __('Sans titre', 'wpm');
}

$args = [];
echo wpm_titre_options($args); // "Sans titre"
```

## Pièges fréquents

La fusion nulle ne teste que l'absence ou la valeur `null` : une chaîne vide `''` ou le chiffre `0` sont considérés comme des valeurs valides et ne déclenchent donc pas le repli, contrairement à ce qu'on obtiendrait avec un simple test de « faussetée » via `||`. Elle ne remplace pas non plus une vraie validation de type ou de format des données reçues : un paramètre défini mais malformé passera sans encombre le test de fusion nulle, alors qu'il aurait dû être rejeté par un contrôle plus strict en amont du traitement.
