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 = ['apple', 'pear']; $fruits = ['banana', 'orange', ...$parts, 'watermelon'];//['banana', 'orange', 'apple', 'pear', 'watermelon']; //老的写法 $fruits = array_merge(['banana', 'orange'],$parts,['watermelon']);
5. Null-Koaleszenzoperator-Zuweisung
<?php $array['key'] ??= computeDefault(); // 老的写法 if (!isset($array['key'])) { $array['key'] = 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,['p','a','div']); //老的写法 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