PHP 8.6 SortDirection : des API de tri plus claires et plus sûres pour PHP

· Oskar Stark · Expertise · Temps de lecture: 3 minutes
Modern abstract editorial scene with cleaner, safer sorting API concepts and subtle purple accents

PHP 8.6 introduit `SortDirection`, une évolution utile qui rend les API de tri plus claires. Voici ce que cela change, pourquoi c'est important et comment l'utiliser en pratique.

PHP a toujours proposé plusieurs façons de trier des tableaux et des structures de données, mais toutes les API ne sont pas aussi expressives. Avec PHP 8.6, le nouvel enum SortDirection améliore la lisibilité et la sécurité du type lorsque vous devez indiquer un ordre croissant ou décroissant.

Il s’agit d’un petit ajout au langage, mais il s’inscrit dans une tendance plus large du PHP moderne : passer de flags faiblement typés et d’entiers "magiques" à des API explicites et auto-documentées.

Pourquoi SortDirection est important

Traditionnellement, les fonctions de tri de PHP utilisent des flags comme SORT_ASC et SORT_DESC, ou des callbacks de comparaison personnalisés. Même si elles sont familières, ces constantes ne sont en réalité que des entiers, ce qui rend le code moins explicite qu’il ne pourrait l’être.

SortDirection permet aux développeurs d’exprimer leur intention de manière plus claire :

  • SortDirection::Ascending

  • SortDirection::Descending

Le code devient ainsi plus facile à lire, plus simple à refactorer et moins vulnérable aux erreurs d’utilisation accidentelles.

Un aperçu rapide du nouvel enum

Dans PHP 8.6, vous pouvez travailler directement avec l’enum au lieu de passer des flags entiers bruts là où l’API le prend en charge.

Exemple : comment utiliser SortDirection dans votre code

use SortDirection;

function sortUsers(array $users, SortDirection $direction): array
{
    usort($users, function (array $a, array $b) use ($direction): int {
        $comparison = $a['name'] <=> $b['name'];

        return match ($direction) {
            SortDirection::Ascending => $comparison,
            SortDirection::Descending => -$comparison,
        };
    });

    return $users;
}

$users = [
    ['name' => 'Zoe'],
    ['name' => 'Anna'],
    ['name' => 'Mike'],
];

print_r(sortUsers($users, SortDirection::Ascending));
print_r(sortUsers($users, SortDirection::Descending));

Cet exemple illustre l’un des principaux avantages du nouvel enum : la direction fait partie du système de types et n’est pas seulement une convention.

Comparaison avec les approches antérieures

Avant SortDirection, votre code aurait ressemblé à celui-ci :

function sortUsers(array $users, int $direction): array
{
    usort($users, function (array $a, array $b) use ($direction): int {
        $comparison = $a['name'] <=> $b['name'];

        if ($direction === SORT_DESC) {
            return -$comparison;
        }

        return $comparison;
    });

    return $users;
}

Cela fonctionne, mais présente quelques inconvénients :

  • int $direction ne transmet pas le sens aussi bien qu’un enum

  • n’importe quel entier peut être passé par erreur

  • l’API oblige à retenir quelle constante correspond à quel comportement

Avec SortDirection, le compilateur et l’exécution peuvent vous aider à exprimer l’intention plus clairement.

Cas d’usage concrets

Vous bénéficierez le plus de SortDirection pour du code qui expose le tri comme fonctionnalité configurable, par exemple :

  • des tableaux de bord d’administration avec ordre de tri sélectionnable par l’utilisateur

  • des endpoints d’API avec sort=asc|desc

  • des helpers de collections réutilisables

  • une logique de tri dans des services métier

Exemple : convertir une entrée de requête en SortDirection

use SortDirection;

function directionFromString(string $value): SortDirection
{
    return strtolower($value) === 'desc'
        ? SortDirection::Descending
        : SortDirection::Ascending;
}

$direction = directionFromString($_GET['direction'] ?? 'asc');

Cela permet de maintenir la frontière entre l’entrée utilisateur et la logique interne de manière explicite. Analysez les chaînes une seule fois, puis travaillez avec un enum fortement typé dans le reste de l’application.

Une meilleure adéquation avec les codebases PHP modernes

L’introduction de SortDirection peut sembler anodine, mais elle s'inscrit dans l’évolution du PHP dans les versions récentes :

  • plus d’enums

  • plus de types explicites

  • moins de constantes ambiguës

  • un modèle de domaine plus clair

Pour les équipes qui maintiennent de grandes applications Symfony ou PHP, ces changements réduisent la charge de travail. Une petite amélioration de la clarté de l’API peut faire gagner du temps chaque fois qu’un futur développeur revient sur le code.

Ce que cela signifie pour Symfony et le développement d’applications

Même si votre framework n’expose pas encore directement SortDirection, vous pouvez adopter ce pattern dans votre propre application.

Par exemple, lors de la création d’un contrôleur ou d’un service Symfony qui gère le tri, vous pouvez :

  1. accepter une chaîne provenant de la requête

  2. la valider et la normaliser

  3. la convertir en SortDirection

  4. utiliser l’enum dans votre couche domaine ou service

Cette séparation aide à garder des contrôleurs légers et une logique métier lisible.

use SortDirection;

final class UserSorter
{
    public function sort(array $users, SortDirection $direction): array
    {
        usort($users, function (array $a, array $b) use ($direction): int {
            $result = $a['createdAt'] <=> $b['createdAt'];

            return $direction === SortDirection::Ascending ? $result : -$result;
        });

        return $users;
    }
}

Ce type de code est facile à tester et simple à faire évoluer.

Les points à garder à l’esprit

Quelques notes pratiques quand vous adoptez le nouvel enum :

  • vérifiez votre version minimale de PHP avant de l’utiliser

  • conservez l’analyse des entrées à la périphérie de l’application

  • privilégiez les enums dans votre code métier, même si l’interface externe utilise encore des chaînes

  • utilisez match ou des branches explicites lorsque la direction influence la logique métier

Conclusion

SortDirection est un petit ajout, mais il reflète un principe important du PHP moderne : rendre l’intention explicite.

Si vous développez des applications maintenables, en particulier dans des codebases basées sur Symfony, adopter ce type d’enums peut rendre vos API plus claires et votre code plus facile à comprendre.

À mesure que PHP continue d’évoluer, ce sont souvent ces améliorations incrémentales qui ont l’impact le plus fort au quotidien pour les équipes de développement.

Vous souhaitez approfondir vos connaissances ?

SensioLabs propose des formations personnalisables pour vous aider, vous et votre équipe, à maîtriser les nouvelles fonctionnalités de PHP 8.6, telles que l’extension URI, ainsi que d'autres bonnes pratiques modernes de PHP.

Cela pourrait aussi vous intéresser

Large tree under the sunlight
Mathieu Santostefano

Multipliez votre vitesse de développement avec l’IA grâce aux Git Worktrees

Fini le jonglage fastidieux entre git stash et les réinstallations de dépendances. Découvrez comment les Git Worktrees révolutionnent votre expérience développeur en permettant à vos agents IA de travailler sur une branche isolée pendant que vous restez concentré sur votre code. Une méthode indispensable pour mener vos tâches en parallèle et multiplier votre vitesse d'exécution sans friction.

En savoir plus : Multipliez votre vitesse de développement avec l’IA grâce aux Git Worktrees
A man sculpting a rock with PDF written on it
Steven Renaux

Créer un Custom Builder - L'histoire du GotenbergBundle

Nous avons déjà vu comment générer un fichier PDF en quelques lignes de code à l'aide de Gotenberg et de GotenbergBundle, un bundle Symfony. Mais que faire lorsque votre application doit générer plusieurs fichiers PDF différents, chacun avec sa propre mise en page, ses propres styles et ses propres données ?

En savoir plus : Créer un Custom Builder - L'histoire du GotenbergBundle
Nicolas Grekas standing on stage at SymfonyLive Paris 2026
Jules Daunay

SymfonyLive Paris 2026 : IA et retrouvailles au sommet pour la Team SensioLabs

Le rideau vient de tomber sur le SymfonyLive Paris 2026, et on a encore des étoiles ✨ (et des lignes de code) plein les yeux. En tant que créateur de Symfony et sponsor historique, SensioLabs ne pouvait rêver d'un meilleur moment pour célébrer l'open source, l'innovation et, surtout, l'incroyable communauté qui nous entoure.

En savoir plus : SymfonyLive Paris 2026 : IA et retrouvailles au sommet pour la Team SensioLabs
Paper notes on a wall
Imen Ezzine

Plongée dans les coulisses de trois cérémonies collaboratives

A la suite d’un post sur LinkedIn, j’ai pensé à écrire cet article pour décrire 3 cérémonies qui m’ont marquée et que j’ai adorées pendant l’une de mes dernières missions : Event Storming, Example Mapping et Domain Storytelling.

En savoir plus : Plongée dans les coulisses de trois cérémonies collaboratives
Illustration of Developer
Silas Joisten

La révolution de l’expérience développeur en 2026

L’expérience développeur est plus importante que jamais. Découvrez comment de meilleurs outils, des flux de travail plus intelligents et une culture de l’apprentissage peuvent transformer la manière dont les équipes conçoivent des logiciels.

En savoir plus : La révolution de l’expérience développeur en 2026
Nicolas Grekas with a mic in his right hand raising his left hand on stage at SymfonyCon Amsterdam 2025
Jules Daunay

Symfony 8 : Stabilité, sécurité et innovation au service des développeurs

À l’occasion du lancement de Symfony 8, nous avons rencontré Nicolas Grekas, figure emblématique de l'open-source et contributeur majeur du framework. Entre nouveaux composants JSON, durcissement de la sécurité et intégration native avec PHP 8.4, Nicolas nous explique pourquoi cette version 8 s'inscrit dans la continuité des versions précédentes de Symfony, sans bousculer les entreprises. Un point complet pour comprendre les nouveautés et aborder votre montée de version sereinement.

En savoir plus : Symfony 8 : Stabilité, sécurité et innovation au service des développeurs
Why PHP?
Silas Joisten

Pourquoi PHP est le meilleur choix pour le backend des logiciels d'entreprise ?

Découvrez pourquoi PHP est une technologie de premier plan pour les applications d'entreprise. Il offre des performances élevées, dispose d'un vaste écosystème de développeurs, permet de réduire les coûts opérationnels et fait preuve d'une fiabilité éprouvée.

En savoir plus : Pourquoi PHP est le meilleur choix pour le backend des logiciels d'entreprise ?
Formation Symfony UX FR
Elise Hamimi

Des interfaces plus modernes : maîtrisez Symfony UX avec la nouvelle formation officielle de SensioLabs

En quelques années à peine, Symfony UX a été plébiscité par les utilisateurs de Symfony. Parfaitement adapté aux priorités actuelles des développeurs, il permet de créer simplement des interfaces interactives et performantes, sans quitter le confort du framework. Il était temps de l'ajouter à notre catalogue de formations. C’est pourquoi nous lançons officiellement notre nouvelle formation Symfony UX.

En savoir plus : Des interfaces plus modernes : maîtrisez Symfony UX avec la nouvelle formation officielle de SensioLabs