Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der neuen Funktionen von PHP7

Detaillierte Erläuterung der neuen Funktionen von PHP7

零到壹度
零到壹度Original
2018-03-24 09:56:112227Durchsuche

Dieses Mal werde ich die neuen Funktionen von PHP7 zusammenfassen. Das Folgende ist ein praktischer Fall.


Neue PHP7-Funktionen

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:

1. string

2. int

3. float

4.bool

Sie erweitern andere in PHP5 eingeführte Typen

1. Klassenname

2. Schnittstelle

3. Array

4. Rückruftyp

Zum Beispiel: 🎜>

Ausgabe:
int(9)

<span style="font-size:18px;">function sumOfInts(int ...$ints)
{
    return array_sum($ints);
}
var_dump(sumOfInts(2, &#39;3&#39;, 4.1));</span>


Deklaration des Rückgabetyps

php7 fügt Unterstützung für Rückgabetypen hinzu, die konsistent sind mit Parametertypen Die Deklaration ist sehr ähnlich, die Rückgabetyp-

-Deklaration gibt den Typ des Rückgabewerts der Funktion an. Die verfügbaren Typen sind dieselben wie die in der Parameterdeklaration verfügbaren.

Zum Beispiel:


<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[&#39;user&#39;] ?? &#39;nobody&#39;;


$username = isset($_GET[&#39;user&#39;]) ? $_GET[&#39;user&#39;] : &#39;nobody&#39;;


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:


Konstantes Array definieren


<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(&#39;ANIMALS&#39;, [
    &#39;dog&#39;,
    &#39;cat&#39;,
    &#39;bird&#39;
]);
echo ANIMALS[1]; // outputs "cat"
?>
php5.6 中 仅能通过const 定义
<?php
const $a = [
     &#39;a&#39;,&#39;b&#39;,&#39;c&#39;,
];
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


lautet wie folgt:
<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([
    &#39;cache_limiter&#39; => &#39;private&#39;,
    &#39;read_and_close&#39; => true,
]);
?>
</span>
Neu hinzugefügte random_bytes( ) und random_int( ) zwei Funktionen

Bitte beachten Sie Folgendes für die spezifische Verwendung:


random_bytes()

random_int()

list() unterstützt nicht mehr das automatische Entpacken von

vor

list bietet keine Garantien für Beim Betreiben von Objekten, die ArrayAccess implementieren, wurde dieses Problem nun gelöst

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!

Stellungnahme:
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