Heim  >  Artikel  >  Backend-Entwicklung  >  Erklären Sie die neuen Funktionen von PHP8 anhand von Beispielen

Erklären Sie die neuen Funktionen von PHP8 anhand von Beispielen

藏色散人
藏色散人nach vorne
2021-12-02 14:14:153509Durchsuche

PHP8.0 neue Funktionen, Interpretation und Beispiele

Neue benannte Parameterfunktion

Was sind benannte Parameter?
Beim Aufruf einer Funktion können Sie den Parameternamen angeben Name, Parameter Die Reihenfolge kann ohne Installation der ursprünglichen Funktionsparameter übergeben werden.


Beispiel:
  <?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);

Anmerkungsfunktion

Was sind Anmerkungen? Gehen Sie direkt zum Code und erklären Sie ihn abschließend.

Beispiel:
#[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’}

Persönliche Zusammenfassung der Annotationsfunktion. Mithilfe von Annotationen können Klassen in Metadatenklassen mit geringer Entkopplung und hoher Kohäsion definiert werden. Es kann bei Verwendung flexibel durch Annotationen eingeführt werden, und der Zweck des Aufrufs kann durch die Reflexion annotierter Klasseninstanzen erreicht werden.

**Die mit Anmerkungen versehene Klasse wird nur aufgerufen, wenn sie instanziiert wird


Konstruktorattribut-Promotion

Was bedeutet das? Der Modifikatorbereich des Klassenattributs kann im Konstruktor deklariert werden
Beispiel :

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

Spart die Menge an Code, Klassenattribute müssen nicht separat deklariert werden.

Union-Typ

kann in Szenarien verwendet werden, in denen der Parametertyp unsicher ist.

Beispiel:
    function printSomeThing(string|int $value)
    {
        var_dump($value);
    }

Übereinstimmungsausdruck

ähnelt dem Wechselgeld, ist jedoch streng = = = Übereinstimmung

Beispiel:
<?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

Neuer Nullsafe-Operator
<?php
   class User
   {
       public function __construct(private string $name)
       {
           //啥也不干
       }
       public function getName()
       {
           return $this->name;
       }
    }
    //不实例 User 类,设置为null
    $user = null;
   echo $user->getName();//php8之前调用,报错
   echo $user?->getName();//php8调用,不报错,返回空

Vereinfachtes is_null-Urteil

Empfohlenes Lernen: „
PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonErklären Sie die neuen Funktionen von PHP8 anhand von Beispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen