PHP7 bringt erhebliche Leistungsverbesserungen und neue Funktionen sowie Verbesserungen einiger Funktionen früherer Versionen. Dieser Artikel wird Ihnen helfen, die neuen Funktionen in PHP7 zu verstehen und zu diskutieren.
1. Skalare Typdeklaration
Wir wissen, dass PHP eine schwach typisierte Programmiersprache ist, daher bietet es keine Methode zur Angabe des Typs von Eingabeparametern und Rückgabewerten. PHP7 bricht diesen Status Quo und fügt Unterstützung hinzu Skalare Die Deklaration von Typen (int, float, string, bool) wird unterstützt, um zu deklarieren, ob eine strikte Typprüfung erforderlich ist:
declare(strict_types=1) function add(int $x, int $y) : int { return $x + $y; } echo add(1, 2); //int(7) declare(strict_types=1) function add(int $x, int $y) : int { return $x + $y; } echo add(1, 2); //int(7)
Gültige Typen sind: Klassen-/Schnittstellenname, self, array, callable, bool, float, int und string.
2. NULL-Merging-Operator
Der NULL-Merging-Operator wurde in PHP7 hinzugefügt, es wird für uns sehr praktisch sein. Ruft einen Parameter ab und kann einen Standardwert bereitstellen, wenn dieser leer ist. Wie gibt der ??-Operator die linke Seite zurück, wenn der Wert auf seiner linken Seite existiert und nicht NULL ist, andernfalls wird der Wert auf der rechten Seite zurückgegeben? Lassen Sie uns die Leistungsfähigkeit des ??-Operators anhand des folgenden Codeabschnitts erleben.
<?php // 获取user参数的值(如果为空,则用'nobody') // PHP5中我们这样来实现: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // PHP7中,使用??运算符更便捷: $username = $_GET['user'] ?? 'nobody'; ??> <?php // 获取user参数的值(如果为空,则用'nobody') // PHP5中我们这样来实现: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // PHP7中,使用??运算符更便捷: $username = $_GET['user'] ?? 'nobody'; ??>
3. Anonyme Klasse
Wie der Name schon sagt, gibt es keinen Klassennamen und seine Deklaration und Instanziierung unterstützt gleichzeitig die Instanziierung Eine anonyme Klasse durch eine neue Klasse kann verwendet werden, um einige vollständige Klassendefinitionen zu ersetzen, die nach der Verwendung „gebrannt“ werden.
echo (new class() { public function myMethod() { return "Hello!"; } })->myMethod(); //Result: Hello! echo (new class() { public function myMethod() { return "Hello!"; } })->myMethod(); //Result: Hello!
4. Weitere Fehler können mit Ausnahmen behandelt werden
Mehr Fehler in PHP7 werden zu abfangbaren Ausnahmen und werden an den Entwickler zurückgegeben ist ein Fehler. Wenn er abgefangen wird, wird er zu einer Ausnahme, die im Programm behandelt werden kann. Standardmäßig führt Error direkt dazu, dass das Programm unterbrochen wird, während PHP7 ihn über Try/Catch-Blöcke erfasst und verarbeitet, sodass das Programm weiterhin ausgeführt werden kann und Programmierern flexiblere Optionen geboten werden.
Codebeispiel:
nonExistFunction($arg); // It will generate fatal error nonExistFunction($arg); // It will generate fatal error
Zu diesem Zeitpunkt löst der obige Code den Fehler „Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktionsmethode () für ein Nicht-Objekt“ aus Ein schwerwiegender Fehler stoppt die weitere Ausführung des folgenden Codes.
Wenn Sie den Code also weiterhin ausführen möchten, können Sie ihn durch Ausnahmebehandlung lösen:
try { nonExistFunction($arg); //This method is not exists then it will be go to catch } catch (EngineException $e ) { echo "Exception: {$e->getMessage()}n"; } try { nonExistFunction($arg); //This method is not exists then it will be go to catch } catch (EngineException $e ) { echo "Exception: {$e->getMessage()}n"; }
5. Kombiniert mit dem Vergleichsoperator <=>
Dies erfordert nicht viel Erklärung. Schauen wir uns den Beispielcode direkt an. Sie können die Funktion dieses Operators anhand des Codes leicht verstehen.
// PHP 7之前的写法:比较两个数的大小 function func ( $ a , $ b ) { return ($a < $b) ? -1 : (($a > $b) ? 1 : 0) } // PHP新增的操作符 <=> function func ( $ a , $ b ) { return $a <=> $b; } // PHP 7之前的写法:比较两个数的大小 function func ( $ a , $ b ) { return ($a < $b) ? -1 : (($a > $b) ? 1 : 0) } // PHP新增的操作符 <=> function func ( $ a , $ b ) { return $a <=> $b; }
6. Array-Konstanten definieren
Als wir in der Vergangenheit define() zum Definieren von Konstanten verwendeten, unterstützte der Datentyp nur Skalare, in PHP7 jedoch , Definition wird unterstützt Konstante vom Array-Typ.
define('MYCONSTANT', array('a','b','c')); define('MYCONSTANT', array('a','b','c'));
Es gibt viele neue Funktionen in PHP7. Wir werden sie auch in Zukunft aktualisieren. Lassen Sie uns gemeinsam kommunizieren, lernen und Fortschritte machen.