Table des matières
Amélioration des classes en lecture seule
Constantes de classe typées
#[Override] 属性
数组中的负索引
匿名只读类
新函数 json_validate
Randomizer 增强
动态类常量获取
更具针对性的日期/时间异常
优化了 unserialize() 错误处理
Améliorations de la fonction range()
特征和静态属性
堆栈溢出检测
新函数 mb_str_pad
Fermetures de méthodes magiques et paramètres nommés
Visibilité constante invariante
Dépréciations
Maison développement back-end PHP8 Grande version PHP 8.3 : innovation et amélioration, créant l'avenir

Grande version PHP 8.3 : innovation et amélioration, créant l'avenir

Nov 24, 2023 am 11:01 AM
php

PHP 8.3 est sorti le 23 novembre 2023, marquant une autre étape importante dans l'évolution du langage. Cette version introduit de nombreuses nouvelles fonctionnalités, améliorations de performances et dépréciations conçues pour améliorer l'expérience de développement PHP. Dans ce guide complet, nous approfondirons ces mises à jour, en fournissant des informations, des conseils et des exemples de code créatifs pour vous aider à vous adapter et à tirer le meilleur parti de PHP 8.3.

Amélioration des classes en lecture seule

PHP 8.3 a modifié le comportement de clonage des classes en lecture seule pour permettre la réinitialisation des propriétés en lecture seule lors du clonage. Ce changement répond à un cas spécifique dans le clonage profond. Référez-vous à l'exemple suivant :

class Article {
    public readonly DateTime $publishedOn;
    public function __construct(DateTime $publishedOn) {
        $this->publishedOn = $publishedOn;
    }
    public function __clone() {
        // PHP 8.3 允许
        $this->publishedOn = new DateTime();
    }
}
Copier après la connexion

Ce changement permet plus de flexibilité dans la gestion des propriétés en lecture seule, notamment lors de la copie d'objets avec des structures complexes.

Constantes de classe typées

PHP 8.3 permet aux développeurs de spécifier des types pour les constantes de classe, améliorant ainsi la sécurité des types et rendant le code plus propre. Par exemple :

class Config {
    const API_KEY = 'your-api-key';
}
Copier après la connexion

Cette fonctionnalité améliore la robustesse des constantes de classe, les rendant partie intégrante du contrat de classe.

#[Override] 属性

PHP 8.3 中的 #[Override]属性用于声明某个方法有意重写父方法。该属性可在重命名或删除父方法时捕获错误,从而提高代码质量。例如:

abstract class BaseClass
{
    public function defaultMethod(): int
    {
        return 1;
    }
}
final class DerivedClass extends BaseClass
{
    #[Override]
    public function defaultMethod(): int
    {
        return 2;// 故意重写
    }
}
Copier après la connexion

属性增加了额外的安全层,确保您的覆盖始终是有意且可识别的。

数组中的负索引

PHP 8.3 对数组处理负索引方式进行了改进。在以前的版本中,如果使用负索引将一个项目添加到空数组,然后添加另一个项目,则第二个项目会从 0 开始。在 PHP 8.3 中,第二个项目将放置在下一个负索引处,即 -1。例如:

$array = [];
$array[-1] = '第一个';
$array[] = '第二';
var_export($array); // [&#39;first&#39;, &#39;second&#39;] 在 PHP < 8.3 中,[&#39;first&#39;, &#39;second&#39;] 在 PHP 8.3 中
Copier après la connexion

一变化使得负指数的处理更加可预测和一致。

匿名只读类

PHP 8.3 引入了对匿名类标记为只读的支持,这为动态创建不可变对象提供了更大的灵活性。例如:

$anonymousClass = new readonly class {
    public function __construct(
        public string $name = &#39;Anonymous&#39;,
    ) {}
};
Copier après la connexion

增强功能使只读类在各种编程场景中更加通用,扩大了其应用范围。

新函数 json_validate

PHP 8.3 新增的 json_validate() 函数提供了一种节省内存的方法来检查字符串是否为有效的 JSON。此函数特别适用于需要验证 JSON 而不对其进行解码的场景。它的工作原理如下:

$jsonString = &#39;{"姓名": "小明", "年龄": 20}&#39;;
$isJsonValid = json_validate($jsonString);
Copier après la connexion

该函数简化了 JSON 验证,使其更加高效和简单。

Randomizer 增强

PHP 8.3 对 PHP 8.2 中引入的 Randomizer 类进行了增强,新增了从字符串生成随机字节以及获取指定范围内的随机浮点数的方法。例如:

$randomizer = new Randomizer();
$randomBytes = $randomizer->getBytesFromString(&#39;abcdef&#39;, 4);
$randomFloat = $randomizer->getFloat(0.0, 1.0);
Copier après la connexion

新方法扩展了 Randomizer 类的功能,使其能够生成更丰富、更灵活的随机数据。

动态类常量获取

PHP 8.3 新增了动态获取类常量的语法,使代码在使用常量时更加灵活、易读。例如:

class Setting {
  const MODE = &#39;产生&#39;;
  public static function getCurrentMode() {
    return static::MODE;
  }
}
$currentMode = Setting::getCurrentMode();
Copier après la connexion

这种语法简化了动态访问类常量的过程,增强了代码的可读性和可维护性。

更具针对性的日期/时间异常

PHP 8.3 对日期和时间函数的异常处理进行了改进,新增了针对特定错误情况的专用异常。此改进使错误报告更加描述性和准确,从而提高了调试和处理日期/时间相关问题的效率。

优化了 unserialize() 错误处理

PHP 8.3 中的 unserialize() 函数在遇到问题时始终抛出 E_WARNING 错误,从而提供更统一和可预测的错误处理。此更改简化了序列化场景中的调试和错误处理。

Améliorations de la fonction range()

PHP 8.3 pour range() a apporté de nombreuses améliorations, notamment en lançant range() 函数进行了多项改进,包括针对无效边界输入抛出 TypeError 异常,以及针对无效步长值抛出 ValueError 异常。这些改进使函数的行为更加直观和一致。

特征和静态属性

PHP 8.3 中,使用具有静态属性的特征将重新声明从父类继承的静态属性,为当前类创建单独的静态属性存储。此更改使特征中静态属性的行为与类中静态属性的行为一致。

堆栈溢出检测

PHP 8.3 添加了新的 INI 指令来检测堆栈溢出,从而防止分段错误。此功能增强了 PHP 应用程序的稳定性和可靠性,尤其是在复杂或递归场景中。

新函数 mb_str_pad

PHP 8.3 新增的 mb_str_pad()

Traits et propriétés statiques🎜🎜Dans PHP 8.3, l'utilisation d'un trait avec des propriétés statiques redéclarera les propriétés statiques héritées de la classe parent, créant ainsi un magasin de propriétés statiques distinct pour la classe actuelle. Ce changement rend le comportement des propriétés statiques dans les traits cohérent avec le comportement des propriétés statiques dans les classes. 🎜🎜Détection de débordement de pile🎜🎜PHP 8.3 ajoute une nouvelle directive INI pour détecter le débordement de pile afin d'éviter les erreurs de segmentation. Cette fonctionnalité améliore la stabilité et la fiabilité des applications PHP, notamment dans des scénarios complexes ou récursifs. 🎜🎜Nouvelle fonction mb_str_pad🎜🎜Nouveau dans PHP 8.3 mb_str_pad() La fonction comble le vide des fonctions de chaîne multi-octets et convient au traitement des encodages multi-octets tels que UTF -8 Crucial. Cette fonction garantit que la chaîne est correctement renseignée quel que soit l'encodage. 🎜

Fermetures de méthodes magiques et paramètres nommés

PHP 8.3 améliore la flexibilité et l'expressivité des méthodes magiques en vous permettant de créer des fermetures à partir de méthodes magiques et de transmettre des paramètres nommés à ces fermetures, les rendant plus puissantes et polyvalentes.

Visibilité constante invariante

PHP 8.3 corrige le bug de vérification de visibilité constante lors de l'implémentation des interfaces. Ce changement assure une visibilité cohérente des constantes, conforme aux principes généraux de visibilité en PHP.

Dépréciations

Comme toujours, PHP 8.3 inclut un certain nombre de dépréciations pour supprimer progressivement les fonctionnalités obsolètes ou moins efficaces et faire avancer le langage. Ces dépréciations incluent des modifications apportées à des fonctions telles que mb_strimwidth() 和 ldap_connect() .

La sortie de PHP 8.3 est une autre étape importante dans le développement et l'amélioration continue du langage PHP. Les nouvelles fonctionnalités, améliorations et dépréciations offrent aux développeurs davantage d'outils et de capacités pour écrire un code plus efficace, plus robuste et plus maintenable. Au fur et à mesure que vous explorez et adoptez ces changements, assurez-vous de tester minutieusement vos applications et de rester informé des derniers développements de l'écosystème PHP.

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 de ce site Web
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

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)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

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)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

See all articles