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üsselwortarray
definieren.
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.
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
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.
Die obige Routine gibt Folgendes aus:
6
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 function
unduse const
.
Die obige Routine gibt Folgendes aus:
42 Name\Space\f
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)
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.
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 ?>
Konstanten-Array definieren überdefine()
Konstanten vom Typ Array können jetzt überdefine()
definiert werden. In PHP5.6 kann es nur überconst
definiert werden.
define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1]; // 输出 "cat"
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);
Die obige Routine gibt Folgendes aus:
1
Gruppenverwendungsanweisung
Klassen, Funktionen und Konstanten, die aus derselbennamespace
importiert wurden, können jetzt auf einmal mit einer einzigen importiert werden use-Anweisung.
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...
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
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
iterable
iterierbarPseudoklasse
现在引入了一个新的被称为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 }
四、从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; }
扩展了参数类型
重写方法和接口实现的参数类型现在可以省略了。不过这仍然是符合LSP,因为现在这种参数类型是逆变的。
interface A { public function Test(array $input); } class B implements A { public function Test($input){} // type omitted for $input }
允许分组命名空间的尾部逗号
命名空间可以在PHP 7中使用尾随逗号进行分组引入。
use Foo\Bar\{ Foo, Bar, Baz, };
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!