Dieses Mal werde ich die neuen Funktionen von PHP7 zusammenfassen. Das Folgende ist ein praktischer Fall.
Skalare Typdeklaration (erfordert, dass der Parameter ein bestimmter Typ ist. Wenn der Parametertyp nicht übereinstimmt, ist dies ein schwerwiegender Fehler Fehler tritt in PHP5 auf, PHP7 löst eine TypeError-Ausnahme aus.
hat zwei Modi: obligatorisch (Standard) und strikt. Typparameter sind:
2. int
1. Klassenname
Ausgabe:
int(9)
<span style="font-size:18px;">function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1));</span>
Deklaration des Rückgabetyps
-Deklaration gibt den Typ des Rückgabewerts der Funktion an. Die verfügbaren Typen sind dieselben wie die in der Parameterdeklaration verfügbaren.
<span style="font-size:18px;"><?php function arraysSum(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); } print_r(arraysSum([1,2,3], [4,5,6], [7,8,9])); 以上例程会输出: Array ( [0] => 6 [1] => 15 [2] => 24 )</span>
NULL-Koaleszenzoperator
Wenn die Variable existiert und der Wert nicht NULL ist, gibt sie ihren eigenen Wert zurück, andernfalls gibt sie ihren zweiten Parameter zurück
Die Ergebnisse der oberen und unteren Ausdrücke sind gleich.
$username = $_GET['user'] ?? 'nobody';
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
Vergleichsoperatoren kombinieren
wird verwendet, um zwei Ausdrücke zu vergleichen. Wenn $a größer, gleich oder kleiner als $b ist, wird 1, 0 bzw. -1 zurückgegeben. Zum Beispiel:
<span style="font-size:18px;"><?php // Integers echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 // Floats echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // Strings echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 ?></span>
Anonyme Klasse durch define() Durch die Unterstützung einer neuen Klasse zum Instanziieren einer anonymen Klasse kann dies geschehen Wird verwendet, um einige Vervollständigungsklassen zu ersetzen, die nur einmal verwendet werden
<?php define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1]; // outputs "cat" ?> php5.6 中 仅能通过const 定义 <?php const $a = [ 'a','b','c', ]; echo $a[1] ; //输出 “b” ?>
Filterung für unserialize() bereitstellen
IntlChar
Die neu hinzugefügte IntlChar-Klasse soll mehr ICU-Funktionen verfügbar machen. Diese Klasse definiert sich selbst. Es gibt viele statische Methoden zum Betreiben von Unicode-Zeichen in mehreren Zeichensätzen
Wenn Sie diese Klasse nutzen möchten, müssen Sie zuerst die Intl-Erweiterung installieren<span style="font-size:18px;"><?php // 把所有的对象转换为 __PHP_Incomplete_Class object $data = unserialize($foo, ["allowed_classes" => false]); // 除了MyClass,MyClass2 都转换为 into __PHP_Incomplete_Class object $data = unserialize($foo, ["allowed_classes" => ["MyClass", "MyClass2"]); // 默认的行为,接受所有的参数 $data = unserialize($foo, ["allowed_classes" => true]); </span>
Erwartet
soll eine abwärtskompatible und erweiterte Methode der vorherigen Assert()-Methode sein, die das Aktivieren von Assertionen in einer Produktionsumgebung zum Nulltarif macht und die Möglichkeit bietet, charakteristische Ausnahmen auszulösen, wenn Assertionen fehlschlagen.
Assert() ist nun ein Sprachkonstrukt, das es ermöglicht, dass das erste Argument ein Ausdruck und nicht nur eine auszuwertende Zeichenfolge oder ein zu testender Boolescher Wert ist
Verwendung Verwenden Sie diese Option, um eine Reihe von Klassen
wie folgt zu deklarieren: Der Generator-Rückgabeausdruck
<span style="font-size:18px;"><?php // Pre PHP 7 code use some\namespace\ClassA; use some\namespace\ClassB; use some\namespace\ClassC as C; use function some\namespace\fn_a; use function some\namespace\fn_b; use function some\namespace\fn_c; use const some\namespace\ConstA; use const some\namespace\ConstB; use const some\namespace\ConstC; // PHP 7+ code use some\namespace\{ClassA, ClassB, ClassC as C}; use function some\namespace\{fn_a, fn_b, fn_c}; use const some\namespace\{ConstA, ConstB, ConstC}; ?> </span>
Ein Generator kann an einen anderen Generator delegieren Das Gerät
lautet wie folgt:
<span style="font-size:18px;"><?php $gen = (function() { yield 1; yield 2; return 3; })(); foreach ($gen as $val) { echo $val, PHP_EOL; } echo $gen->getReturn(), PHP_EOL;// 换行,为了提高源码可读性 以上例程会输出: 1 2 3 </span>
Neue Ganzzahldivisionsfunktion intp() lautet wie folgt:
<span style="font-size:18px;"><?php function gen() { yield 1; yield 2; yield from gen2(); } function gen2() { yield 3; yield 4; } foreach (gen() as $val) { echo $val, PHP_EOL; } ?> 以上例程会输出: 1 2 3 4 </span>
Sitzungsoptionen
kann jetzt einen Array-Parameter über session_start( ), Sie können eine Sitzung über die Konfigurationsanweisung in php.ini schreiben. Die Parameter unterstützen session.lazy_write, read_and_close, Cache_limiter usw.
wie folgt:
<span style="font-size:18px;"><?php var_dump(intp(10, 3)); ?> 以上例程会输出: int(3) </span>
Neu hinzugefügte preg_replace_callback_array()-Funktion
, die eine bessere Leistung als preg_replace_callback() erbringen kann
<span style="font-size:18px;"><?php session_start([ 'cache_limiter' => 'private', 'read_and_close' => true, ]); ?> </span>
Bitte beachten Sie Folgendes für die spezifische Verwendung:
random_int()
list() unterstützt nicht mehr das automatische Entpacken von
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der neuen Funktionen von PHP7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!