Tutoriel graphique français intitulé "Comment créer un ACCORDÉON SANS JAVASCRIPT ?" utilisant la méthode moderne avec summary et details. Boutons "Afficher plus" et "Masquer le texte", coche, exemple de texte et balises HTML  /  sur fond de codage.

Comment créer un accordéon sans JavaScript : la méthode moderne avec summary et details

On cherche souvent la même chose : réduire le bruit visuel, garder la page lisible et laisser le lecteur déplier ce qui l’intéresse. En 2026, on obtient ce résultat proprement avec <details> et <summary>. Le navigateur fournit un widget natif. Ainsi, on évite les dépendances JavaScript, on simplifie le DOM et on améliore la robustesse.

Pourquoi ce pattern est la meilleure base en 2026

On gagne immédiatement sur quatre axes.

  1. Performance réelle
    On supprime l’initialisation JS, les gestionnaires d’évènements et les recalculs inutiles. Le widget se comporte nativement.
  2. Sémantique HTML correcte
    On décrit une “divulgation” de contenu, pas une mise en scène. La spec définit clairement open et le comportement attendu.
  3. Accessibilité native
    Le navigateur gère l’état ouvert/fermé et il le communique aux technologies d’assistance dans la plupart des cas. Cela réduit les erreurs d’implémentation « maison ».
  4. Maintenance facile
    On lit le HTML en une seconde. Ensuite, on itère avec CSS. Enfin, on n’ajoute du JS que si la valeur est claire.

Le modèle minimal, propre et “copier-coller”

On commence par la version la plus stable.

<details>
  <summary>Lire la suite</summary>
  <p>
    Ce contenu reste masqué par défaut. On l’affiche en cliquant sur le résumé.
  </p>
</details>
Code language: HTML, XML (xml)
  • Quand open est absent, on n’affiche que le <summary>.
  • Quand open est présent, on affiche aussi le contenu.
<details open>
  <summary>Replier</summary>
  <p>Le contenu s’affiche dès le chargement.</p>
</details>
Code language: HTML, XML (xml)

Lire la suite

L'image montre le texte "php" en minuscules avec une police moderne et audacieuse, mettant en évidence PHP 8.5. Le dégradé passe du rose à l'orange puis au bleu sur un fond bleu foncé, créant un effet vibrant et lumineux.

Installer PHP 8.5 sous Ubuntu Server

PHP 8.5 est sorti le 20 novembre 2025. Cette version continue la dynamique de PHP 8.x : plus de productivité, meilleure DX et un langage qui vous pousse vers les bonnes pratiques sans casser tout votre code.

Dans cet article, on passe en revue les nouveautés majeures, les changements subtils (mais importants) et ce que vous devez vérifier avant de passer votre stack en 8.5.

PHP 8.5 en un coup d’œil

En bref, PHP 8.5 apporte :

  • L’opérateur pipe |> pour chaîner les appels de manière lisible.
  • Une nouvelle extension URI native pour parser et manipuler les URLs proprement.
  • clone() amélioré avec un paramètre pour modifier des propriétés pendant le clonage.
  • L’attribut #[\NoDiscard] pour signaler les retours à ne pas ignorer.
  • Closures et first-class callables utilisables dans les expressions constantes.
  • Nouvelles fonctions utilitaires comme array_first(), array_last(), get_error_handler(), get_exception_handler().
  • OPcache obligatoire, intégré au binaire PHP.
  • Stack trace sur les erreurs fatales et nouvelles options de debug.
  • Une salve de dépréciations ciblées (backticks, casts non canoniques, etc.).

L’opérateur pipe |> : fini la salade d’appels imbriqués

C’est la star de PHP 8.5. L’opérateur pipe permet de chaîner des appels de fonctions en lisant le flux de gauche à droite.

Avant : du code illisible

<?php

$title = ' PHP 8.5 Released ';

$slug = strtolower(
    str_replace('.', '',
        str_replace(' ', '-',
            trim($title)
        )
    )
);Code language: PHP (php)

Maintenant : des pipelines explicites

<?php

$title = ' PHP 8.5 Released ';

$slug = $title
    |> trim(...)
    |> (fn (string $str): string => str_replace(' ', '-', $str))
    |> (fn (string $str): string => str_replace('.', '', $str))
    |> strtolower(...);Code language: HTML, XML (xml)

Quelques points clés :

  • La valeur de gauche est passée implicitement comme premier argument des callables de droite.
  • Vous pouvez utiliser des fonctions, des closures, des first-class callables ($obj->method(...), Class::staticMethod(...)).
  • Le pipe ne remplace pas tout, mais il rend les transformations successives nettement plus lisibles, surtout combiné avec les fonctions pures.

En pratique, vous allez l’adorer pour :

  • Le nettoyage de données (normalisation d’input, trimming, filtering).
  • Les pipelines sur des collections (combiner array_map, array_filter, array_values, etc.).
  • Les transformations de chaînes et les générateurs.

clone() évolue : le “clone with” version PHP

PHP 8.5 introduit un clone() amélioré, capable de cloner un objet et de modifier certaines propriétés en une seule opération.

Avant, pour un objet readonly, il fallait bricoler :

<?php

readonly class Color {
    public function __construct(
        public int $red,
        public int $green,
        public int $blue,
        public int $alpha = 255,
    ) {}

    public function withAlpha(int $alpha): self {
        $values = get_object_vars($this);
        $values['alpha'] = $alpha;

        return new self(...$values);
    }
}

$blue = new Color(79, 91, 147);
$transparentBlue = $blue->withAlpha(128);Code language: HTML, XML (xml)

Avec PHP 8.5, clone() accepte désormais un second argument $withProperties :

<?php

readonly class Color {
    public function __construct(
        public int $red,
        public int $green,
        public int $blue,
        public int $alpha = 255,
    ) {}

    public function withAlpha(int $alpha): self {
        return clone($this, [
            'alpha' => $alpha,
        ]);
    }
}

$blue            = new Color(79, 91, 147);
$transparentBlue = $blue->withAlpha(128);Code language: HTML, XML (xml)

Ce que ça change pour vous :

  • Le pattern with-er devient trivial, même avec des propriétés readonly.
  • Vous réduisez le boilerplate autour de l’immutabilité.
  • Les objets de configuration, DTO et value objects deviennent plus agréables à manipuler.

Lire la suite

Radiohead – All I Need (Microcosmos)

Radiohead’s “All I Need”, mixed with a scene from Microcosmos (1996). The sensual pace and delicate melody of the song reminded me of a world much smaller than ours, with all the love and violence we experience.