Heim > Artikel > Backend-Entwicklung > Eine kurze Einführung in die neuen Funktionen von PHP 7.0
In diesem Artikel werden hauptsächlich die neu hinzugefügten Funktionen von PHP 7.0 vorgestellt.
?? Ich habe dies an die erste Stelle gesetzt, weil ich es nützlich fand. Verwendung: $a = $_GET['a'] ?? 1; Es ist äquivalent zu: 582e032bc8ce532817a06ca7fc60fb16 String { let greeting = "Hello, " + personName + "!" return greeting } Diese Funktion kann uns helfen, einige Probleme zu vermeiden, die durch die implizite Typkonvertierung von PHP verursacht werden. Wenn Sie vor der Definition einer Funktion über die erwarteten Ergebnisse nachdenken, können Sie unnötige Fehler vermeiden.
Allerdings gibt es auch hier eine Funktion, die Aufmerksamkeit erfordert. PHP 7 fügt eine Declare-Direktive hinzu: strict_types, die den strikten Modus verwendet.
Wenn Sie die Typdeklaration des Rückgabewerts verwenden und diese nicht im strikten Modus deklariert ist und der Rückgabewert nicht vom erwarteten Typ ist, wird PHP ihn trotzdem umwandeln. Wenn es sich jedoch um einen strikten Modus handelt, wird ein schwerwiegender Fehler vom Typ TypeError ausgelöst.
Force-Modus:
<?php function foo($a) : int { return $a; } foo(1.0);
Der obige Code kann normal ausgeführt werden und die foo-Funktion gibt int 1 ohne Fehler zurück.
Strikter Modus:
<?php declare(strict_types=1); function foo($a) : int { return $a; } foo(1.0);
PHP Schwerwiegender Fehler: Uncaught TypeError: Rückgabewert von foo() muss vom Typ Integer sein, Float zurückgegeben in test.php:6
Nach der Deklaration wird ein schwerwiegender Fehler ausgelöst.
Ist es dem strengen Modus von js ähnlich?
Skalare Typdeklaration
Die formale Parametertypdeklaration von Funktionen in PHP 7 kann jetzt skalar sein. In PHP 5 kann es sich nur um einen Klassennamen, eine Schnittstelle, ein Array oder eine aufrufbare Funktion handeln (PHP 5.4 kann eine Funktion sein, einschließlich anonymer Funktionen). Jetzt können Sie auch String, Int, Float und Bool verwenden.
Offizielles Beispiel:
<?php // Coercive mode function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1));
Es ist zu beachten, dass das oben erwähnte Problem des strengen Modus dasselbe ist Hier gilt: Im erzwungenen Modus (Standard: erzwungene Typkonvertierung) werden Parameter, die nicht dem erwarteten Typ entsprechen, dennoch zur Typkonvertierung gezwungen, und im strikten Modus wird ein schwerwiegender TypeError-Fehler ausgelöst.
1.use Batch-Deklaration
In PHP 7 können mehrere Klassen oder Funktionen oder const in einem Satz deklariert werden:
<?php 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}; 但还是要写出每个类或函数或 const 的名称(并没有像 Python 一样的 from some import * 的方法)。
Das zu beachtende Problem ist: Wenn Sie ein Framework verwenden, das auf Composer und PSR-4 basiert, kann diese Schreibmethode erfolgreich geladen werden Datei? Tatsächlich ist es möglich, dass die von Composer registrierte Autoloading-Methode den Speicherort gemäß dem Namensraum der Klasse durchsucht. Diese Schreibweise hat keine Auswirkung darauf.
Andere Funktionen
Einige andere Funktionen werde ich nicht einzeln vorstellen. Wenn Sie interessiert sind, können Sie dies überprüfen Offizielle Dokumentation: http://php.net/manual/en/migration70.new-features.php
Besprechen Sie kurz einige davon:
PHP 5.3 Start Mit anonymen Funktionen gibt es jetzt definierte konstante Arrays; Abschlüsse können über einen endgültigen Rückgabewert (oder besser gesagt Iteratoren) verfügen, oder Sie können einen anderen eingeben Generator (Generator-Delegierter) durch die neue Syntax von yield from. Zwei neue Merkmale von Generatoren (Rücklauf und Ertrag aus) können kombiniert werden. Sie können das spezifische Erscheinungsbild selbst testen. PHP 7 ist jetzt auf RC5 und die endgültige Version sollte bald verfügbar sein.
Das obige ist der detaillierte Inhalt vonEine kurze Einführung in die neuen Funktionen von PHP 7.0. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!