Heim  >  Artikel  >  PHP7.4 neue Features und veraltete Funktionen (Zusammenfassung)

PHP7.4 neue Features und veraltete Funktionen (Zusammenfassung)

藏色散人
藏色散人nach vorne
2019-12-26 14:48:375391Durchsuche

PHP7.4 neue Features und veraltete Funktionen (Zusammenfassung)

Zusammenfassung neuer und veralteter Funktionen in PHP7.4

Neue Funktionen in PHP7.4

PHP7.4 wurde am 28. des letzten Monats veröffentlicht. Hat einige neue Funktionen gebracht. Dadurch können wir weniger Code schreiben.

1. Qualifizierten Typ zu Attributen hinzufügen

<?php
class User {
  public int $age;
  public string $name
}  
$user = new User();
$user->age = 10;
$user->name = "张三";
//error
$user->age = "zhang";//需要传递int

2. Pfeilfunktion

Diese Funktion bezieht sich im Wesentlichen auf die Syntax von ES6 in Js. Dadurch können wir weniger Code schreiben. Wenn Ihr Code die Funktion fn hat. Kann in Konflikt geraten

<?php
$factor = 10;
$nums = array_map(fn($n)=>$n * $factor,[1,2,3]);//[10,20,30]
//之前的写法
$nums = array_map(function($num)use($factor){
  return $num * $factor;
},[1,2,3])

3. Begrenzte Rückgabetyp-Kovarianz und Parametertyp-Kontravarianz

Vollständige Kovarianz-/Kontravarianzunterstützung wird nur bei Verwendung von Autoloading bereitgestellt. Innerhalb einer einzelnen Datei können nur nichtzyklische Typreferenzen verwendet werden, da alle Klassen verfügbar sein müssen, bevor sie referenziert werden.

<?php
class A {}
class B extends A {}
class Producer {
    public function method(): A {}
}
class ChildProducer extends Producer {
    public function method(): B {}
}
?>

Array entpacken

Verwenden Sie den Spread-Operator..., um das Array zu entpacken. Diese Funktion sollte von js übernommen werden. Siehe Beispiel

<?php
$parts = [&#39;apple&#39;, &#39;pear&#39;];
$fruits = [&#39;banana&#39;, &#39;orange&#39;, ...$parts, &#39;watermelon&#39;];//[&#39;banana&#39;, &#39;orange&#39;, &#39;apple&#39;, &#39;pear&#39;, &#39;watermelon&#39;];
//老的写法
$fruits = array_merge([&#39;banana&#39;, &#39;orange&#39;],$parts,[&#39;watermelon&#39;]);

5. Null-Koaleszenzoperator-Zuweisung

<?php
$array[&#39;key&#39;] ??= computeDefault();
// 老的写法
if (!isset($array[&#39;key&#39;])) {
    $array[&#39;key&#39;] = computeDefault();
}
?>

6. Numerisches Literaltrennzeichen

Numerische Literale können Unterstriche zwischen Zahlen enthalten.

<?php
6.674_083e-11; // float
299_792_458;   // decimal
0xCAFE_F00D;   // hexadecimal
0b0101_1111;   // binary
?>

Auslösen von Ausnahmen von __toString() zulassen

In der Vergangenheit führte dies zu einem schwerwiegenden Fehler, der bei der String-Konvertierung behoben werden konnte Schwerwiegende Fehler wurden in Fehlerausnahmen umgewandelt.

8. Filter

FILTER_VALIDATE_FLOAT hinzugefügt

<?php
  filter_var(1.00,FILTER_VALIDATE_FLOAT);
filter.filters.validate

9. strip_tags unterstützt Arrays

<?php
  strip_tags($str,[&#39;p&#39;,&#39;a&#39;,&#39;div&#39;]);
//老的写法
strip_tags($str,"<p><a><div>");

Veraltete Funktion

1. Verschachtelter ternärer Operator ohne explizite Klammern

<?php
1 ? 2 : 3 ? 4 : 5;   // deprecated
(1 ? 2 : 3) ? 4 : 5; // ok
1 ? 2 : (3 ? 4 : 5); // ok
?>

Während des Interviews muss ich mir endlich keine Sorgen mehr machen, Sie nach dem Ergebnis zu fragen. Tatsächlich schreibt in der Produktion nicht jeder so.

2. Greifen Sie mit geschweiften Klammern auf den Array-Index zu

<?php
$arr = ["a"=>"111"];
$index = "a";
$arr{$index}//废弃
$arr[$index];

Um ehrlich zu sein, ist dies das erste Mal, dass ich es gesehen habe, daher wurde es verworfen, was bedeutet, dass es niemand auf diese Weise verwenden wird .

3. reelle und is_reale Zahlen

<?php
  $num = "";
  $a = (real) $num;//废弃
$a = (float) $num;

4. Das Schlüsselwort parent wird in einer Klasse ohne übergeordnete Klasse verwendet.

Die Verwendung von parent in einer Klasse ohne übergeordnete Klasse wird durchgeführt Kompilierungsfehler verursachen.

<?php
  class Test{
  public function index() 
  {
    return parent::index();//编译错误
  }
}

5. Money_format-Funktion

money_format ist veraltet und wird durch numberFormater ersetzt

6. Entfernte Erweiterungen

1.Firebird/Interbase

2.Recode

3.WDDX

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