recherche
Maisondéveloppement back-endtutoriel phpPHP : principales fonctionnalités et améliorations

PHP 8.4 est enfin là, apportant des changements passionnants qui devraient transformer la façon dont les développeurs travaillent ! Avec chaque nouvelle version, PHP continue de prouver pourquoi il s’agit d’un outil si essentiel dans le paysage actuel du développement Web.

Conditions préalables

Cet article suppose que vous possédez des connaissances de base du langage de programmation PHP.

Logiciel que j'utilise pour le développement PHP

  • Laravel Herd : utilisé pour gérer mes versions PHP et mon serveur Nginx.

  • PHPStorm : un excellent IDE avec un bon copilote IntelliSense et IA.

  • Laragon : un environnement de développement local facile à utiliser qui prend en charge PHP et d'autres technologies.


Visibilité asymétrique des propriétés (version 2) ??

En PHP, la visibilité des propriétés des objets est traditionnellement symétrique. Cela signifie que les opérations ⁣get et set pour une propriété doivent partager la même visibilité (publique, privée ou protégée) mais ne peuvent pas différer.

Par exemple, si une propriété est publique, la lecture et l'écriture sont publiques, sans aucun moyen d'autoriser une opération sans l'autre.

En contexte, lorsque vous déclarez une propriété d'une classe publique, elle devient mutable, permettant de la lire et de la modifier depuis l'extérieur de la classe.

Cependant, avec l'avènement de la visibilité asymétrique, vous pouvez désormais définir des étendues distinctes pour les propriétés de lecture et d'écriture.

Cela signifie qu'une propriété peut être lisible dans un contexte et accessible en écriture dans un autre, offrant ainsi un meilleur contrôle sur la façon dont les propriétés sont accessibles et modifiées.

class Animal{
  public private(set) string $name;

  public setName(string $foo){
    $ths->name = $foo;
  }
}

$animal = new Animal();

echo $animal->name; // This will run correctly

Nous pouvons rendre une propriété publique et la propriété définie est rendue privée. Cela signifie que la propriété ne peut pas être mise à jour en dehors de la classe, ce qui la rend immuable.

Si vous essayez de modifier la propriété $name, vous obtiendrez une erreur indiquant que vous ne pouvez pas modifier la propriété en raison de la portée de visibilité.

PHP : Top Features and Improvements

Voici quelques points clés à noter concernant la visibilité asymétrique :

  • Les espaces ne sont pas autorisés dans la déclaration set-visibility. private(set) est correct. private( set) n'est pas correct et entraînera une erreur d'analyse.

  • Si une propriété est déclarée publique, la visibilité principale peut être omise. Par exemple, public private(set) et private(set) se comporteront de la même manière, car la visibilité publique est implicite.

  • Seules les propriétés typées peuvent avoir une visibilité distincte pour les opérations définies. Cela signifie que vous ne pouvez pas appliquer une visibilité asymétrique aux propriétés non typées en PHP.

  • La visibilité définie doit être identique ou plus restrictive que la visibilité obtenue. Par exemple, public protected(set) et protected protected(set) sont valides, mais protected public(set) entraînera une erreur de syntaxe.

Découvrez-en davantage sur la visibilité de l'asymétrie, y compris d'autres exemples à consulter.

Crochets de propriété ?

Le Property Hook est une fonctionnalité intéressante de PHP 8.4 qui introduit un moyen pour les développeurs d'ajouter des directives get et set directement à une variable sans créer de manière expressive des méthodes pour lire et écrire dans la variable.

Alternativement, les méthodes magiques __get et __set peuvent être utilisées, mais cela rend le code plus verbeux, peut introduire des erreurs et interrompre les outils d'analyse statique.

On peut dire sans se tromper que la conception et la syntaxe des hooks de propriété sont similaires à celles de Kotlin mais sont principalement influencées par les langages de programmation C# et Swift.

En PHP 8.3, nous pouvons créer une classe avec une propriété dans son constructeur, et cela nous donne la possibilité de lire et d'écrire dans la propriété.

class Animal{
  public private(set) string $name;

  public setName(string $foo){
    $ths->name = $foo;
  }
}

$animal = new Animal();

echo $animal->name; // This will run correctly

Le problème avec cette approche est que lorsque nous décidons d'écrire dans la propriété, soit nous utilisons la méthode magique __set, soit nous créons de manière expressive une méthode pour muter la variable, ce qui pourrait provoquer une rupture dans la base de code sur toute la ligne.

Les hooks de propriété permettent aux développeurs de créer immédiatement une directive set après avoir créé la propriété.

class Car {
    public function __construct(public string $model) { }
}

Notez que la valeur transmise à la directive set doit être du même type que la propriété, sinon une erreur sera générée.

Vous pouvez transmettre un autre type à la directive set et le convertir dans le type correct avant d'écrire dans la propriété, comme indiqué ci-dessous :

class Car{
  public string $model{
    set (string $value) {
      if(strlen($value) === 0){
        throw new ValueError("Model name cannot be empty");
      }
      $this->model = $value;
    }
  }
}

L'exemple ci-dessus montre comment nous pouvons recevoir en toute sécurité une variable de type composé de la directive set et l'analyser selon le type correct défini par la propriété.

Vous pouvez omettre l'argument passé à la directive set s'il est identique au type de propriété. Par exemple, les deux méthodes ci-dessous sont valides et se comportent de la même manière.

class Car{
  public string $year{
    set (string|number $value) {
      $year = intval($value);
      if($year year= $value;
    }
  }
}

Notez que l'argument est par défaut $value s'il est omis. Cette syntaxe est courante dans les langages de programmation comme Kotlin et C#.

Instanciation de classes sans parenthèses supplémentaires

Avant cette fonctionnalité, accéder aux membres d'une classe en PHP impliquait l'ajout de parenthèses supplémentaires autour de la classe.

// --------------------------METHOD 1----------------------------
public string $model{
    set (string $value) {
      if(strlen($value) === 0){
        throw new ValueError("Model name cannot be empty");
      }
      $this->model = $value;
    }
 }

// --------------------------METHOD 2----------------------------
public string $model{
    set {
      if(strlen($value) === 0){
        throw new ValueError("Model name cannot be empty");
      }
      $this->model = $value;
    }
  }

Si vous ne mettez pas le nouvel appel Car() entre parenthèses, vous obtiendrez une erreur d'analyse.

La nouvelle syntaxe nous permet d'accéder aux méthodes, propriétés et constantes sans avoir besoin de parenthèses supplémentaires.

class Car {

  public function getName(){
    return "Toyota Camry";
  }
}

$carName = (new Car())->getName();

Pour une description complète de ce changement proposé, consultez les détails dans la RFC.

Présentation de nouvelles fonctions de tableau

De nouvelles fonctions d'assistance arrivent dans PHP 8.4.

Certaines de ces fonctions ont déjà leur implémentation dans Laravel Arr ou Collection helpers.

La fonction array_find_key()

La fonction array_find_key($array, $callback) renvoie la clé du premier élément pour lequel la méthode $callback renvoie true. Si aucun élément ne remplit la condition, la fonction renvoie null.

class Animal{
  public private(set) string $name;

  public setName(string $foo){
    $ths->name = $foo;
  }
}

$animal = new Animal();

echo $animal->name; // This will run correctly

La fonction array_find()

La fonction array_find_key() est conçue pour rechercher dans un tableau et renvoyer la clé du premier élément qui satisfait une condition définie par une fonction de rappel.

De la même manière que array_find_key(), il renvoie null si aucun élément correspondant n'est trouvé.

class Car {
    public function __construct(public string $model) { }
}

Si aucun fruit du tableau n'avait une quantité supérieure à 10, la fonction renverrait null.

La fonction array_any()

La fonction array_any() détermine si au moins un élément d'un tableau remplit un critère spécifique spécifié par une fonction d'évaluation fournie.

Si au moins un élément remplit la condition, la fonction renvoie vrai ; sinon, il renvoie false.

class Car{
  public string $model{
    set (string $value) {
      if(strlen($value) === 0){
        throw new ValueError("Model name cannot be empty");
      }
      $this->model = $value;
    }
  }
}

Si aucun nombre dans le tableau n'est supérieur à 10, la fonction retournera false.

La fonction array_all()

La fonction array_all() vérifie si chaque élément d'un tableau réussit un test spécifique. Il applique une règle spéciale (la fonction de rappel) à chaque élément.

Si tous les éléments réussissent le test selon la règle, alors array_all() renvoie true.

class Car{
  public string $year{
    set (string|number $value) {
      $year = intval($value);
      if($year year= $value;
    }
  }
}

Dans cet exemple, la fonction array_all() parcourra le tableau $numbers et appliquera la fonction de rappel à chaque élément. Le rappel vérifie si le nombre est divisible par 2 (c'est-à-dire pair).

Puisque tous les nombres du tableau sont pairs, la fonction array_all() renverra true et le message "Tous les nombres sont pairs." sera affiché.


Nous avons examiné les principales améliorations introduites dans PHP 8.4. Ces mises à jour offrent des améliorations précieuses aux développeurs, notamment de nouvelles fonctionnalités puissantes et des gains potentiels d'efficacité.

Pour approfondir toutes les mises à jour, y compris des exemples et des explications détaillées, visitez la page officielle d'annonce de la version PHP 8.4.0.

N'oubliez pas de consulter les dépréciations et les modifications de compatibilité ascendante pour assurer une transition en douceur vers la dernière version.

Quelle est la prochaine étape ? ?

  • Si vous avez apprécié l'article, n'oubliez pas de le partager avec les autres.

  • J'aimerais connaître votre avis : déposez un commentaire ci-dessous et poursuivons la conversation. Acclamations! ?

Suivez-moi pour plus d'articles sur PHP, Node.js, TypeScript et PHP ! Vous pouvez également me trouver sur Twitter ou LinkedIn.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium)11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium)Mar 03, 2025 am 10:49 AM

Les longues URL, souvent encombrées de mots clés et de paramètres de suivi, peuvent dissuader les visiteurs. Un script de raccourcissement d'URL offre une solution, créant des liens concis idéaux pour les médias sociaux et d'autres plateformes. Ces scripts sont utiles pour les sites Web individuels

Travailler avec les données de session Flash dans LaravelTravailler avec les données de session Flash dans LaravelMar 12, 2025 pm 05:08 PM

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

Construisez une application React avec un Laravel Back End: Partie 2, ReactConstruisez une application React avec un Laravel Back End: Partie 2, ReactMar 04, 2025 am 09:33 AM

Il s'agit de la deuxième et dernière partie de la série sur la construction d'une application React avec un back-end Laravel. Dans la première partie de la série, nous avons créé une API RESTful utilisant Laravel pour une application de liste de base sur le produit. Dans ce tutoriel, nous serons Dev

Misque de réponse HTTP simplifié dans les tests LaravelMisque de réponse HTTP simplifié dans les tests LaravelMar 12, 2025 pm 05:09 PM

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API RESTCurl dans PHP: Comment utiliser l'extension PHP Curl dans les API RESTMar 14, 2025 am 11:42 AM

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

12 meilleurs scripts de chat PHP sur Codecanyon12 meilleurs scripts de chat PHP sur CodecanyonMar 13, 2025 pm 12:08 PM

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

Annonce de l'enquête sur la situation en 2025 PHPAnnonce de l'enquête sur la situation en 2025 PHPMar 03, 2025 pm 04:20 PM

L'enquête sur le paysage PHP 2025 étudie les tendances actuelles de développement du PHP. Il explore l'utilisation du cadre, les méthodes de déploiement et les défis, visant à fournir des informations aux développeurs et aux entreprises. L'enquête prévoit la croissance de la PHP moderne versio

Notifications à LaravelNotifications à LaravelMar 04, 2025 am 09:22 AM

Dans cet article, nous allons explorer le système de notification dans le framework Web Laravel. Le système de notification de Laravel vous permet d'envoyer des notifications aux utilisateurs sur différents canaux. Aujourd'hui, nous discuterons de la façon dont vous pouvez envoyer des notifications OV

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP