SkyMinds ~ by Matt | Formateur et Développeur WordPress

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.

Une fenêtre de terminal stylisée avec une barre de titre bleue affiche "> /WP-CLI" en grande police blanche sur fond sombre, représentant la migration de WordPress vers un nouveau serveur à l'aide de l'outil de ligne de commande WP-CLI.

Migrer WordPress avec WP-CLI vers un nouveau serveur

Migrer WordPress n’a pas à être stressant. Avec WP-CLI, vous orchestrez chaque étape en ligne de commande : c’est plus rapide, scriptable et reproductible.

Au programme : sauvegarde propre, transfert net, import SQL, search-replace sans casse et permissions verrouillées. Vous évitez les plugins lourds, vous gagnez en contrôle et vous limitez les surprises.

Notez que ce tutoriel ne couvre pas l’installation d’une pile serveur Web comme LEMP ou LAMP. Je recommande bien sûr NGINX et MariaDB.

Liste des tâches du tutoriel

Ancien serveur WordPress

  • Installer WP-CLI sur l’ancien serveur
  • Sauvegarder l’installation WordPress et la base de données
  • Transférer les sauvegardes vers le nouveau serveur

Nouveau serveur WordPress

  • Créer une nouvelle base de données sur le nouveau serveur
  • Restaurer l’ancienne base sur la base du nouveau serveur
  • Installer WordPress sur le nouveau serveur

Préparer l’ancien serveur WordPress

Installer WP-CLI

sudo wget -q https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O /usr/bin/wp
sudo chmod 755 /usr/bin/wpCode language: JavaScript (javascript)

Entrer dans votre dossier WordPress

cd /var/www/wp-oldCode language: JavaScript (javascript)

Exporter votre base de données

mkdir -p ~/backups
wp db export ~/backups/wp-old.sql --allow-root --skip-themes --skip-plugins

Créer une archive de votre dossier WordPress

Le . inclut tous les fichiers et dossiers du répertoire courant.
L’option -z ajoute la compression gzip.

tar -czf ~/backups/wp-old.tar.gz .Code language: JavaScript (javascript)

Notez le préfixe de table dans wp-config.php : vous devrez le renseigner pour que la restauration fonctionne sur le nouveau serveur.

Vous avez maintenant, dans le dossier ~/backups, une sauvegarde de la base de données et une archive complète du site.

Transférez ces deux fichiers sur votre ordinateur via SFTP ou SSH.

Lire la suite