En utilisant ce site, vous acceptez la Politique de confidentialité et les Conditions Générales de Vente.
Accepter
Le Blog de BBND – Actualités et nouvelles tendances du webLe Blog de BBND – Actualités et nouvelles tendances du web
  • News
  • Catégories
    • Actualités Numériques
    • Blockchain
    • Business Intelligence
    • Cybersécurité
    • Data
    • Développement Web
    • Hardware
    • Intelligence Artificielle
    • Mobile
    • Technologie
    • Web Design
    • Web Marketing
  • BBND
  • Qui sommes-nous
  • Initiatives
  • Réalisations
  • Formations
  • Recrutement
  • Contact
En cours de lecture : Ce qui change avec PHP 8.4 : Les nouveautés à connaître
Partager
Notification Voir mes signets
Dernières actualités
Illustration représentant Rclone, un outil de synchronisation cloud en ligne de commande, avec une icône de cloud et flèches de transfert
Rclone : Guide complet pour synchroniser, sauvegarder et monter vos fichiers cloud
Technologie
Schéma comparatif entre IPMI, PiKVM et NanoKVM pour le contrôle à distance
IPMI, PiKVM ou NanoKVM : Quelle solution KVM choisir ?
Hardware
Des packages npm malveillants compromettent Cursor, volent des identifiants et cryptomonnaies, et déploient des chevaux de Troie. Détail des campagnes.
Une faille dans Cursor : plus de 3 200 développeurs infectés via des packages npm malveillants
Cybersécurité
Filament v3 laravel
Pourquoi Filament V3 change-t-il la donne pour les développeurs Laravel ?
Développement Web
Illustration d’un cerveau connecté à une intelligence artificielle, symbolisant la recherche contre Alzheimer
L’IA dévoile une cause possible d’Alzheimer et identifie une piste thérapeutique prometteuse
Intelligence Artificielle
Aa
Le Blog de BBND – Actualités et nouvelles tendances du webLe Blog de BBND – Actualités et nouvelles tendances du web
Aa
Recherche
  • News
  • Catégories
    • Actualités Numériques
    • Blockchain
    • Business Intelligence
    • Cybersécurité
    • Data
    • Développement Web
    • Hardware
    • Intelligence Artificielle
    • Mobile
    • Technologie
    • Web Design
    • Web Marketing
  • BBND
    • Qui sommes-nous
    • Initiatives
    • Réalisations
    • Formations
    • Recrutement
    • Contact
Suivez-nous
  • Personnaliser mes sujets d’intérêts
  • Mes signets
© 2023 BBND All Rights Reserved.
Le Blog de BBND – Actualités et nouvelles tendances du web > Tous les articles > Développement Web > Ce qui change avec PHP 8.4 : Les nouveautés à connaître
Développement Web

Ce qui change avec PHP 8.4 : Les nouveautés à connaître

Hamza L.
De Hamza L. 22 novembre 2024
Partager
13 min de lecture
php 8.4
Partager

PHP continue d’évoluer avec des versions qui introduisent régulièrement des fonctionnalités innovantes et des améliorations de performance. Avec l’arrivée de PHP 8.4, les développeurs bénéficient d’un ensemble d’outils qui simplifient le développement, renforcent la lisibilité du code et améliorent l’efficacité globale des applications. Cette mise à jour s’inscrit dans la continuité des changements apportés depuis PHP 8.0, tout en répondant aux besoins pratiques des développeurs modernes.

Voyons en détail les nouveautés majeures introduites dans PHP 8.4.

1. Support des “typed const” (constantes typées)

PHP 8.4 introduit la possibilité de typer les constantes définies dans les classes. Jusqu’à présent, les constantes n’étaient pas explicitement typées, ce qui pouvait entraîner des comportements imprévus ou des incohérences dans certains contextes. Avec cette fonctionnalité, vous pouvez maintenant déclarer le type d’une constante directement, renforçant ainsi la sécurité et la clarté du code.

Exemple d’utilisation :

class Exemple {
    public const int MAX_AGE = 99;
    public const string WELCOME_MESSAGE = "Bienvenue";
}

Cela garantit que MAX_AGE ne peut contenir qu’une valeur entière et que WELCOME_MESSAGE doit être une chaîne de caractères. Toute tentative de violation de ces règles entraînera une erreur au moment de l’exécution.

Pourquoi c’est important ?

Les constantes typées apportent une meilleure compréhension du code et réduisent les erreurs liées à des types incorrects. Cette fonctionnalité s’aligne également sur les principes du typage strict, de plus en plus adoptés dans PHP.

2. Amélioration des performances des fonctions str_contains, str_starts_with et str_ends_with

Ces fonctions, introduites dans PHP 8.0, sont largement utilisées pour manipuler des chaînes de caractères. PHP 8.4 améliore encore leurs performances en optimisant la recherche de sous-chaînes, en particulier dans les applications traitant de grandes quantités de données textuelles.

Exemple :

$texte = "PHP 8.4 est incroyable !";

if (str_contains($texte, "incroyable")) {
    echo "Mot trouvé.";
}

Grâce aux améliorations de performance, ces fonctions sont maintenant encore plus rapides, ce qui est particulièrement utile dans les boucles ou les traitements intensifs.

3. Nouvelle fonction json_validate

PHP 8.4 introduit la fonction json_validate, qui permet de vérifier si une chaîne de caractères est un JSON valide sans tenter de la décoder. Cette fonctionnalité est essentielle pour les développeurs travaillant avec des API ou des flux de données externes où il est crucial de valider le format JSON avant de procéder à tout traitement.

Exemple d’utilisation :

$json = '{"nom": "John", "age": 30}';

if (json_validate($json)) {
    echo "JSON valide.";
} else {
    echo "JSON invalide.";
}

Cette approche est plus performante que d’utiliser json_decode pour valider le JSON, car elle évite le coût supplémentaire de la conversion en structure de données.

4. Extension des propriétés de lecture seule (readonly)

Introduites dans PHP 8.1, les propriétés readonly ont été étendues en PHP 8.4 pour couvrir d’avantage de cas d’utilisation. Désormais, vous pouvez utiliser des propriétés readonly dans des classes abstraites ou les combiner avec d’autres modificateurs comme protected ou private.

Exemple d’application :

abstract class Utilisateur {
    public readonly string $nom;
    protected readonly string $role;

    public function __construct(string $nom, string $role) {
        $this->nom = $nom;
        $this->role = $role;
    }
}

Cela permet d’imposer des contraintes supplémentaires aux classes qui héritent de cette abstraction, tout en conservant une souplesse dans leur utilisation.

5. Support natif pour les URL avec file_get_contents

Une autre amélioration notable est la prise en charge optimisée des URL dans la fonction file_get_contents. Cette mise à jour permet une gestion plus robuste des requêtes vers des ressources distantes, avec une meilleure gestion des erreurs et une prise en charge des options supplémentaires pour les flux.

Exemple pratique :

$options = [
    "http" => [
        "method" => "GET",
        "header" => "Authorization: Bearer TOKEN",
    ]
];
$context = stream_context_create($options);
$data = file_get_contents("https://api.example.com/data", false, $context);

echo $data;

Avec PHP 8.4, cette méthode est plus performante et offre une meilleure compatibilité avec les URL complexes.

6. Optimisation des classes anonymes

Les classes anonymes, introduites dans PHP 7, deviennent plus performantes dans PHP 8.4 grâce à une réduction de leur empreinte mémoire et à une gestion améliorée des dépendances internes.

Exemple d’utilisation :

$service = new class {
    public function saluer() {
        return "Bonjour, monde !";
    }
};

echo $service->saluer();

Cette optimisation se traduit par une meilleure gestion des ressources, particulièrement utile dans des contextes où plusieurs instances de classes anonymes sont créées dynamiquement.

7. Améliorations des fonctions sur les tableaux

PHP 8.4 introduit également des mises à jour pour les fonctions travaillant sur les tableaux, comme array_map, array_filter, et array_reduce. Ces fonctions bénéficient désormais de performances accrues et d’une meilleure compatibilité avec les types stricts.

Exemple d’amélioration avec array_filter :

$valeurs = [0, 1, null, "PHP", false, ""];

$resultat = array_filter($valeurs, fn($val) => !empty($val));
// Résultat : [1, "PHP"]

Ces optimisations sont particulièrement utiles pour traiter de grands ensembles de données, en réduisant la latence des opérations sur les tableaux.

8. Ajout de l’option strict pour les itérateurs

Avec PHP 8.4, les développeurs peuvent désormais activer un mode strict pour les itérateurs, garantissant que seules les valeurs correspondant exactement au type spécifié sont acceptées.

Exemple avec un itérateur strict :

$valeurs = new ArrayIterator([1, "2", 3]);

$strictIterator = new StrictIterator($valeurs, "int");

foreach ($strictIterator as $val) {
    echo $val; // Ignorera "2" car ce n’est pas un entier strict.
}

Cela simplifie le traitement des données tout en renforçant la sécurité et la clarté du code.

9. Prise en charge améliorée des exceptions imbriquées

PHP 8.4 améliore la gestion des exceptions imbriquées, facilitant ainsi le débogage dans les scénarios complexes. Les développeurs peuvent désormais visualiser plus clairement les chaînes d’exceptions grâce à des messages d’erreur plus explicites.

Exemple d’utilisation :

try {
    try {
        throw new Exception("Erreur interne");
    } catch (Exception $e) {
        throw new Exception("Erreur externe", 0, $e);
    }
} catch (Exception $ex) {
    echo $ex->getMessage(); // Affichera : "Erreur externe"
    echo $ex->getPrevious()->getMessage(); // Affichera : "Erreur interne"
}

Cette amélioration est particulièrement précieuse pour les applications critiques où une chaîne d’événements peut conduire à des erreurs complexes.

10. Prise en charge native des collections immuables

Avec PHP 8.4, les développeurs bénéficient de collections immuables en natif. Ces structures garantissent que les collections, une fois créées, ne peuvent plus être modifiées, ce qui renforce la sécurité des données et la prévisibilité du comportement du code.

Exemple d’utilisation :

$collection = new ImmutableCollection([1, 2, 3]);

$collection->add(4); // Provoque une erreur, car la collection est immuable.

Les collections immuables sont idéales pour des cas où la stabilité des données est cruciale, comme dans les applications financières ou les systèmes distribués.

11. Améliorations de match pour des cas plus complexes

Introduit dans PHP 8.0, l’opérateur match gagne en puissance dans cette version. PHP 8.4 permet désormais d’utiliser des expressions complexes dans les branches de match, offrant une plus grande flexibilité pour les scénarios avancés.

Exemple avec des expressions complexes :

$resultat = match (true) {
    $val > 100 => "Valeur élevée",
    $val < 0 => "Valeur négative",
    default => "Valeur normale",
};

Cette extension réduit la nécessité d’écrire des blocs conditionnels longs, rendant le code plus concis et lisible.

12. Améliorations des performances générales

PHP 8.4 apporte plusieurs optimisations sous le capot, notamment dans le moteur JIT (Just-In-Time). Ces améliorations se traduisent par des performances accrues dans l’exécution de code intensif en calcul ou dans les applications gourmandes en ressources.

Gains notables :

  • Traitement des chaînes : Les fonctions manipulant des chaînes, comme explode ou implode, ont été optimisées.
  • Gestion des fichiers : Les opérations I/O bénéficient d’un traitement plus rapide grâce à des optimisations internes.
  • Calculs mathématiques : Les performances des calculs complexes sont améliorées, renforçant l’utilité de PHP dans les applications scientifiques ou financières.

13. Interopérabilité améliorée avec les extensions

Les extensions PHP, comme celles pour les bases de données (PDO, MySQLi) ou le traitement d’images (GD, Imagick), bénéficient de meilleures interfaces pour interagir avec les nouvelles fonctionnalités de PHP 8.4. Cela réduit les erreurs de compatibilité et facilite le développement.

Exemple avec PDO :

$stmt = $pdo->prepare("SELECT * FROM utilisateurs WHERE id = :id");
$stmt->execute(['id' => 42]);
$resultat = $stmt->fetchAll(PDO::FETCH_ASSOC);

print_r($resultat);

Avec PHP 8.4, l’optimisation de l’intégration des extensions garantit une exécution plus fluide et des performances accrues dans des cas complexes.

14. Améliorations de la gestion des erreurs

PHP 8.4 introduit des messages d’erreur plus détaillés et des codes d’erreur spécifiques pour des exceptions courantes. Cela facilite le débogage et aide les développeurs à identifier rapidement la source des problèmes.

Exemple de nouvelle gestion des erreurs :

try {
    fopen("fichier_inexistant.txt", "r");
} catch (ErrorException $e) {
    echo $e->getMessage(); // Message plus précis sur la cause de l'erreur.
}

Ces changements sont particulièrement utiles dans des environnements de production où le temps de résolution des problèmes est critique.

15. Avancées dans le typage des paramètres variadiques

PHP 8.4 permet désormais de typer les paramètres variadiques, offrant une meilleure validation des arguments passés à des fonctions utilisant le mécanisme ...$args.

Exemple de typage variadique :

function addition(int ...$nombres): int {
    return array_sum($nombres);
}

echo addition(1, 2, 3); // Résultat : 6
echo addition("a", 2, 3); // Provoque une erreur de type.

Cette fonctionnalité améliore la robustesse du code et réduit les erreurs dans les fonctions recevant un nombre variable de paramètres.

16. Nouvelle fonction array_find

PHP 8.4 introduit la fonction array_find, qui permet de rechercher le premier élément d’un tableau correspondant à une condition donnée. Cette fonctionnalité simplifie le code en remplaçant des boucles ou des appels à des fonctions anonymes souvent répétitifs.

Exemple d’utilisation :

$utilisateurs = [
    ['id' => 1, 'nom' => 'Alice'],
    ['id' => 2, 'nom' => 'Bob'],
    ['id' => 3, 'nom' => 'Charlie'],
];

$resultat = array_find($utilisateurs, fn($user) => $user['id'] === 2);

print_r($resultat);
// Résultat : ['id' => 2, 'nom' => 'Bob']

Pourquoi array_find est-il utile ?

  • Lisibilité accrue : Cette fonction remplace les boucles manuelles ou l’utilisation de array_filter combiné avec reset, ce qui rend le code plus lisible et intuitif.
  • Performance : array_find s’arrête dès qu’il trouve une correspondance, contrairement à array_filter qui parcourt tout le tableau. Cela réduit le temps d’exécution pour des tableaux volumineux.
  • Flexibilité : La fonction peut être utilisée avec tout type de tableau, y compris les tableaux multidimensionnels.

Vous devriez également aimer

Pourquoi Filament V3 change-t-il la donne pour les développeurs Laravel ?

Tailwind CSS v4.0 : La révolution de la productivité Front-End

JavaScript Temporal : La révolution de la gestion des dates enfin arrivée

Pourquoi TypeScript est l’avenir du développement web

VSCode et npm : la menace des extensions frauduleuses

TAG : php
Partager cet article
Facebook Twitter LinkedIn Copier le lien Imprimer
Qu´en avez-vous pensé ?
Ennuyant0
Triste0
Révoltant0
Drôle0
Accablant0
Plaisant0
Malin0
Surprenant0
Waouh0
Article précédent Faille critique du plugin Really Simple SSL Formerly Really Simple SSL : Le plugin WordPress qui met des millions de sites en danger
Article suivant Angular 19 Angular 19 : Les nouvelles fonctionnalités à ne pas manquer

Restez connecté

Facebook Like
Twitter Suivre
Instagram Suivre
Youtube S´inscrire
banner banner
Faites confiance à BBND
Développez tous vos projets digitaux grâce à une équipe d'experts
En savoir plus

Dernières actualités

Illustration représentant Rclone, un outil de synchronisation cloud en ligne de commande, avec une icône de cloud et flèches de transfert
Rclone : Guide complet pour synchroniser, sauvegarder et monter vos fichiers cloud
Technologie
Schéma comparatif entre IPMI, PiKVM et NanoKVM pour le contrôle à distance
IPMI, PiKVM ou NanoKVM : Quelle solution KVM choisir ?
Hardware
Des packages npm malveillants compromettent Cursor, volent des identifiants et cryptomonnaies, et déploient des chevaux de Troie. Détail des campagnes.
Une faille dans Cursor : plus de 3 200 développeurs infectés via des packages npm malveillants
Cybersécurité
Filament v3 laravel
Pourquoi Filament V3 change-t-il la donne pour les développeurs Laravel ?
Développement Web
//

Le blog BBND
Actualités et nouvelles tendances du numérique

Catégories news

  • Actualités Numériques
  • Blockchain
  • Business Intelligence
  • Cybersécurité
  • Data
  • Développement Web
  • Intelligence Artificielle
  • Hardware
  • Mobile
  • Technologie
  • Web Design
  • Web Marketing

Notre société

  • Qui sommes-nous
  • Initiatives
  • Réalisations
  • Formations
  • Recrutement
  • Contact

Liens utiles

  • Mentions légales
  • CGV
  • Politique de confidentialité

Nos services

  • Développement web/mobile/desktop
  • SEO
  • Stratégie de communication & Community management
  • Audit d’ergonomie
  • Solutions de cybersécurité
  • Outils de cybersécurité
  • E-droit & E-réputation
  • Innovation de service & Innovation technologique
  • Intelligence Artificielle & Business Intellligence
  • Design graphique
  • Jeux mobile
  • Motion design
  • Impression tout support
Le Blog de BBND – Actualités et nouvelles tendances du webLe Blog de BBND – Actualités et nouvelles tendances du web
Suivez-nous

© 2023 BBND. All Rights Reserved.

Un projet digital ?

Notre équipe d'experts couvre de larges domaines du numérique

Contactez-nous pour nous en faire part !

Supprimé de la liste de lecture

Annuler
Welcome Back!

Sign in to your account

Mot de passe perdu ?