Neue Funktionen von PHP5.5 bis PHP7.2

藏色散人
Freigeben: 2023-02-17 11:38:02
nach vorne
3335 Leute haben es durchsucht


1. Portierung von PHP 5.5.x auf PHP 5.6.x

Verwenden Sie Ausdrucksdefinitionskonstanten

In früheren Versionen von PHP mussten statische Werte verwendet werden, um Konstanten zu definieren, Eigenschaften zu deklarieren und Standardwerte für Funktionsparameter anzugeben. Sie können jetzt numerische Ausdrücke wie Zahlen, Zeichenfolgenliterale und andere Konstanten verwenden, um Konstanten zu definieren, Eigenschaften zu deklarieren und Standardwerte für Funktionsparameter festzulegen.


        
Nach dem Login kopieren

kann jetzt Konstanten vom Typconstüber das Schlüsselwortarraydefinieren.


        
Nach dem Login kopieren

Verwenden Sie den...-Operator, um eine Parameterfunktion variabler Länge zu definieren

Sie können jetzt denfunc_get_args()-Operator verwenden, um eine Parameterfunktion variabler Länge zu implementieren ohne sich auf...verlassen zu müssen.

Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

$req: 1; $opt: 0; number of params: 0 $req: 1; $opt: 2; number of params: 0 $req: 1; $opt: 2; number of params: 1 $req: 1; $opt: 2; number of params: 2
Nach dem Login kopieren

Verwenden Sie den...-Operator für die Parametererweiterung

Verwenden Sie beim Aufrufen einer Funktion...Operator, erweitert Arrays und iterierbare Objekte in Funktionsargumente. In anderen Programmiersprachen wie Ruby wird dies als Verkettungsoperator bezeichnet.

Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

6
Nach dem Login kopieren

use function und use const

use-Operator wurde erweitert, um den Import externer Funktionen zu unterstützen und Konstanten in die Klasse. Die entsprechenden Strukturen sinduse functionunduse const.

Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

42 Name\Space\f
Nach dem Login kopieren

Verwenden Siehash_equals(), um Zeichenfolgen zu vergleichen, um Timing-Angriffe zu vermeiden

2. Portierung von PHP 5.6.x nach PHP 7.0 .x

Skalare Typdeklaration

Skalare Typdeklarationen haben zwei Modi: obligatorisch (Standard) und strikt. Die folgenden Typparameter sind jetzt verfügbar (entweder im erzwungenen oder strikten Modus): string, int, float und bool.


        
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

int(9)
Nach dem Login kopieren

Deklaration des Rückgabewerttyps

PHP 7 fügt Unterstützung für die Deklaration des Rückgabetyps hinzu. Ähnlich wie die Parametertypdeklaration gibt die Rückgabetypdeklaration den Typ des Rückgabewerts der Funktion an. Die verfügbaren Typen sind dieselben wie die in der Parameterdeklaration verfügbaren.


        
Nach dem Login kopieren

Null-Koaleszieroperator

Aufgrund der großen Anzahl von Situationen, in denen ternäre Ausdrücke und isset() im täglichen Gebrauch gleichzeitig verwendet werden, haben wir den Null-Koaleszieroperator hinzugefügt ( ??) Dieser syntaktische Zucker. Wenn die Variable existiert und nicht NULL ist, gibt sie ihren eigenen Wert zurück, andernfalls gibt sie ihren zweiten Operanden zurück.

Nach dem Login kopieren

Raumschiffoperator (Kombinationsvergleichsoperator)

Der Raumschiffoperator wird verwendet, um zwei Ausdrücke zu vergleichen. Es gibt -1, 0 oder 1 zurück, wenn $a kleiner, gleich oder größer als $b ist. Das Vergleichsprinzip folgt den regulären Vergleichsregeln von PHP.

 '1'; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 // 浮点数 echo '1.50' <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // 字符串 echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 ?>
Nach dem Login kopieren

Konstanten-Array definieren überdefine()

Konstanten vom Typ Array können jetzt überdefine()definiert werden. In PHP5.6 kann es nur überconstdefiniert werden.

define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1]; // 输出 "cat"
Nach dem Login kopieren

Closure::call()

Closure::call()bietet jetzt eine bessere Leistung und eine kurze und prägnante Möglichkeit, eine Methode vorübergehend an den Objektabschluss zu binden und ihn aufzurufen Es.

x;}; $getX = $getXCB->bindTo(new A, 'A'); // 中间层闭包 echo $getX(); // PHP 7+ 及更高版本的代码 $getX = function() {return $this->x;}; echo $getX->call(new A);
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

1
Nach dem Login kopieren

Gruppenverwendungsanweisung

Klassen, Funktionen und Konstanten, die aus derselbennamespaceimportiert wurden, können jetzt auf einmal mit einer einzigen importiert werden use-Anweisung.

Nach dem Login kopieren

Generatoren können Ausdrücke zurückgeben

Diese Funktion baut auf der in PHP 5.5 eingeführten Generatorfunktion auf. Sie können einen Ausdruck zurückgeben (aber nicht die Rückgabe eines Referenzwerts), indem Sie die Rückgabesyntax in einer Generatorfunktion verwenden. Sie können den Rückgabewert des Generators erhalten, indem Sie die Methode Generator::getReturn() aufrufen Diese Methode kann nur beim Generieren verwendet werden. Wird einmal aufgerufen, nachdem der Prozessor die Generierung der Arbeit abgeschlossen hat.

Ganzzahldivisionsfunktionintdiv()

3. Migration von PHP 7.0.x auf PHP 7.1.x

Nullable-Typen

Die Typen von Parametern und Rückgabewerten können jetzt nullbar sein, indem vor dem Typ ein Fragezeichen hinzugefügt wird. Wenn diese Funktion aktiviert ist, sind die übergebenen Parameter oder das von der Funktion zurückgegebene Ergebnis entweder vom angegebenen Typ oder null .


        
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

string(10) "elePHPant" NULL string(10) "elePHPant" NULL Uncaught Error: Too few arguments to function test(), 0 passed in...
Nach dem Login kopieren

Void-Funktion

Ein neuer Rückgabewerttyp void wird eingeführt. Methoden, deren Rückgabewert als void-Typ deklariert ist, müssen entweder diereturn-Anweisung ganz weglassen oder eine leerereturn-Anweisung verwenden. NULL ist kein zulässiger Rückgabewert für Void-Funktionen.


        
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

null int(2) int(1) Symmetric array destructuring
Nach dem Login kopieren

Die kurze Array-Syntax ([]) ist jetzt eine Alternative zur list()-Syntax und kann verwendet werden, um den Wert des Arrays zuzuweisen einige Variablen (in foreach enthalten).


        
Nach dem Login kopieren

Sichtbarkeit von Klassenkonstanten

Unterstützt jetzt das Festlegen der Sichtbarkeit von Klassenkonstanten.


        
Nach dem Login kopieren

iterableiterierbarPseudoklasse

<>

现在引入了一个新的被称为iterable的伪类 (与callable类似)。 这可以被用在参数或者返回值类型中,它代表接受数组或者实现了Traversable接口的对象。 至于子类,当用作参数时,子类可以收紧父类的iterable类型到array 或一个实现了Traversable的对象。对于返回值,子类可以拓宽父类的 array或对象返回值类型到iterable。


        
Nach dem Login kopieren

多异常捕获处理

一个catch语句块现在可以通过管道字符(|)来实现多个异常的捕获。 这对于需要同时处理来自不同类的不同异常时很有用。


        
Nach dem Login kopieren

list()现在支持键名

现在list()和它的新的[]语法支持在它内部去指定键名。这意味着它可以将任意类型的数组 都赋值给一些变量(与短数组语法类似)

 1, "name" => 'Tom'], ["id" => 2, "name" => 'Fred'], ]; // list() style list("id" => $id1, "name" => $name1) = $data[0]; // [] style ["id" => $id1, "name" => $name1] = $data[0]; // list() style foreach ($data as list("id" => $id, "name" => $name)) { // logic here with $id and $name } // [] style foreach ($data as ["id" => $id, "name" => $name]) { // logic here with $id and $name }
Nach dem Login kopieren

四、从PHP 7.1.x 移植到 PHP 7.2.x

新的对象类型

这种新的对象类型, object, 引进了可用于逆变(contravariant)参数输入和协变(covariant)返回任何对象类型。


        
Nach dem Login kopieren

允许重写抽象方法(Abstract method)

当一个抽象类继承于另外一个抽象类的时候,继承后的抽象类可以重写被继承的抽象类的抽象方法。

abstract class A { abstract function test(string $s); } abstract class B extends A { // overridden - still maintaining contravariance for parameters and covariance for return abstract function test($s) : int; }
Nach dem Login kopieren

扩展了参数类型

重写方法和接口实现的参数类型现在可以省略了。不过这仍然是符合LSP,因为现在这种参数类型是逆变的。

interface A { public function Test(array $input); } class B implements A { public function Test($input){} // type omitted for $input }
Nach dem Login kopieren

允许分组命名空间的尾部逗号

命名空间可以在PHP 7中使用尾随逗号进行分组引入。

use Foo\Bar\{ Foo, Bar, Baz, };
Nach dem Login kopieren



Das obige ist der detaillierte Inhalt vonNeue Funktionen von PHP5.5 bis PHP7.2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!