Maison  >  Article  >  développement back-end  >  Expliquer les nouvelles fonctionnalités de PHP8 avec des exemples

Expliquer les nouvelles fonctionnalités de PHP8 avec des exemples

藏色散人
藏色散人avant
2021-12-02 14:14:153533parcourir

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);

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’}

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
        ) {}
    }

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);
    }

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer