Maison > développement back-end > PHP8 > le corps du texte

Expliquer les nouvelles fonctionnalités de PHP8 avec des exemples

藏色散人
Libérer: 2023-02-17 12:24:01
avant
3528 Les gens l'ont consulté

Interprétation et exemples des nouvelles fonctionnalités de PHP8.0

Nouvelle fonction de paramètre nommé

Que sont les paramètres nommés ?
C'est un paramètre nommé Lors de l'appel d'une fonction, vous pouvez spécifier le nom du paramètre après avoir spécifié le paramètre. nom, le paramètre La commande peut être passée dans l'ordre sans installer les paramètres de la fonction d'origine


Exemple :
  <?php      /**
       * 计算余额方法
       * @param $amount 账户金额
       * @param $payment 支出金额
       * @return $balance = $amount-$payment 余额
       */
      function balance($amount, $payment)
      {
          return $amount - $payment;
      }
      //传统方式调用
      balance(100, 20);
      //php8 使用命名参数调用
      balance(amount: 100, payment: 20);
      //也可以换个顺序,这样来
      balance(payment: 20, amount: 100);
Copier après la connexion

Fonction d'annotation

Que sont les annotations ? Allez directement au code, et enfin expliquez

Exemple :
#[Attribute]class PrintSomeThing{
  public function __construct($str = &#39;&#39;)
  {
     echo sprintf("打印字符串 %s \n", $str);
  }}#[PrintSomeThing("hello world")]class AnotherThing{}// 使用反射读取住解$reflectionClass = new ReflectionClass(AnotherThing::class);$attributes = $reflectionClass->getAttributes();foreach($attributes as $attribute) {
  $attribute->newInstance(); //获取注解实例的时候,会输出 ‘打印字符串 Hello world’}
Copier après la connexion

Résumé de compréhension personnelle de la fonction d'annotation L'utilisation d'annotations peut définir des classes en classes de métadonnées avec un faible découplage et une cohésion élevée. Il peut être introduit de manière flexible via des annotations lorsqu'il est utilisé, et l'objectif de l'appel peut être atteint en reflétant des instances de classe annotées.

**La classe annotée ne sera appelée que lorsqu'elle sera instanciée


Promotion de l'attribut du constructeur

Qu'est-ce que cela signifie que la portée du modificateur de l'attribut de classe peut être déclarée dans le constructeur
Exemple ? :

<?php
    // php8之前
    class User
    {
        protected string $name;
        protected int $age;
        public function __construct(string $name, int $age)
        {
            $this->name = $name;
            $this->age = $age;
        }
    }
    //php8写法,
    class User
    {
        public function __construct(
            protected string $name,
            protected int $age
        ) {}
    }
Copier après la connexion

Enregistre la quantité de code, pas besoin de déclarer les attributs de classe séparément.

Union Type

Can peut être utilisé dans des scénarios où le type de paramètre est incertain. = Match

Exemple :
    function printSomeThing(string|int $value)
    {
        var_dump($value);
    }
Copier après la connexion

Nouvel opérateur Nullsafe
<?php$key = &#39;b&#39;;$str = match($key) {
    &#39;a&#39; => 'this a',
    'c' => 'this c',
     0  => 'this 0',
    'b' => 'last b',};echo $str;//输出 last b
Copier après la connexion

Jugement is_null simplifié

Apprentissage recommandé : "

Tutoriel vidéo 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!

Étiquettes associées:
source:learnku.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal