PHP : 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é.
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 < 2000){ throw new ValueError("We only accept cars produced in year 2000 and above"); } $this->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 < 2000){ throw new ValueError("We only accept cars produced in year 2000 and above"); } $this->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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds











Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.

PHP est largement utilisé dans le commerce électronique, les systèmes de gestion de contenu et le développement d'API. 1) E-commerce: Utilisé pour la fonction de panier et le traitement des paiements. 2) Système de gestion du contenu: utilisé pour la génération de contenu dynamique et la gestion des utilisateurs. 3) Développement des API: Utilisé pour le développement de l'API RESTful et la sécurité de l'API. Grâce à l'optimisation des performances et aux meilleures pratiques, l'efficacité et la maintenabilité des applications PHP sont améliorées.

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

PHP est toujours dynamique et occupe toujours une position importante dans le domaine de la programmation moderne. 1) La simplicité de PHP et le soutien communautaire puissant le rendent largement utilisé dans le développement Web; 2) sa flexibilité et sa stabilité le rendent exceptionnelle dans la gestion des formulaires Web, des opérations de base de données et du traitement de fichiers; 3) PHP évolue et optimise constamment, adapté aux débutants et aux développeurs expérimentés.

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

L'utilisation de déclarations de prétraitement et l'APD dans PHP peut effectivement empêcher les attaques d'injection SQL. 1) Utilisez PDO pour vous connecter à la base de données et définir le mode d'erreur. 2) Créez des instructions de prétraitement via la méthode de préparation et transmettez des données à l'aide des espaces réservés et exécutez des méthodes. 3) Traitez les résultats de la requête et assurez la sécurité et les performances du code.

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.
