Vergleich neuer Funktionen und Leistungsoptimierungen zwischen PHP7 und PHP5
1. Abstract Syntax Tree (AST)
AST spielt die Rolle einer Middleware im PHP-Kompilierungsprozess und ersetzt den ursprünglichen Interpreter Direktes Ausspucken von Opcode entkoppelt den Interpreter (Parser) und den Compiler (Compiler), was einige Hack-Codes reduzieren und die Implementierung einfacher machen kann, um sie zu verstehen und zu warten:
PHP7Thread-Datenfreigabesicherheit, öffnen Sie einen globalen Thread für den Datenfreigabespeicherplatz
3. Geben Sie den Parameter-Rückgabewerttyp an
4. Ausnahmebehandlung
Try...catch...finally von PHP 5 kann herkömmliche Fehler nicht verarbeiten. Bei Bedarf werden Sie in der Regel die Verwendung von set_error_handler() zum Hacken in Betracht ziehen. Es gibt jedoch immer noch viele Fehlertypen, die von set_error_handler() nicht abgefangen werden können.
PHP 7 hat die Throwable-Schnittstelle eingeführt. Sowohl Fehler als auch Ausnahmen implementieren Throwable nicht direkt, aber die Klassen Exception und Error können erweitert werden. Sie können Throwable verwenden, um Ausnahmen und Fehler abzufangen. Exception ist die Basisklasse für alle PHP- und Benutzerausnahmen; Error ist die Basisklasse für alle internen PHP-Fehler. 6. Neue Methode zum Parsen von Parametern8. Null-Coalesce-Operator (Null-Coalesce-Operator)
Direkt zum Beispiel:$name = $name ?? "NoName"; // 如果$name有值就取其值,否则设$name成"NoName"
9. Raumschiff-Operator (Raumschiff-Operator) (kombinierter Vergleichsoperator)
Form:(expr) < ;= > (expr)
Wenn der linke Operand kleiner ist, wird -1 zurückgegeben, wenn der linke und rechte Operand gleich sind, wird 0 zurückgegeben, wenn der linke Operand größer ist.$name = ["Simen", "Suzy", "Cook", "Stella"]; usort($name, function ($left, $right) { return $left <=> $right; }); print_r($name);
10. PHP 7 erlaubte bisher nur die Verwendung von Konstanten-Arrays in Klassen/Schnittstellen. Jetzt unterstützt PHP 7 auch gewöhnliche Konstanten-Arrays in Nicht-Klassen/Schnittstellen. define("USER", [
"name" => "Simen",
"sex" => "Male",
"age" => "38",
"skill" => ["PHP", "MySQL", "C"]
]);
// USER["skill"][2] = "C/C++"; // PHP Fatal error: Cannot use temporary expression in write context in...
$goo = [ "bar" => [ "baz" => 100, "cug" => 900 ] ]; $foo = "goo"; $$foo["bar"]["baz"]; // 实际为:($$foo)['bar']['baz']; PHP 5 中为:${$foo['bar']['baz']}; // PHP 7 中一个笼统的判定规则是,由左向右结合。
12. Dies ist eine neue Funktion, auf die es sich zu freuen lohnt, in PHP 7 eingeführt zu werden, die die Fehlerbehandlungsfähigkeiten von PHP erheblich verbessern wird. PHP 5s try...catch...final kann mit herkömmlichen Fehlern nicht umgehen, daher sollten Sie bei Bedarf normalerweise darüber nachdenken, es mit set_error_handler() zu hacken. Aber es gibt immer noch viele Fehlertypen, die set_error_handler() nicht abfangen kann. PHP 7 führt die Throwable-Schnittstelle ein. Throwable kann nicht direkt implementiert werden, die Klassen Exception und Error können jedoch erweitert werden. Sie können Throwable verwenden, um Ausnahmen und Fehler abzufangen. Exception ist die Basisklasse für alle PHP- und Benutzerausnahmen; Error ist die Basisklasse für alle internen PHP-Fehler.
$name = "Tony"; try { $name = $name->method(); } catch (\Error $e) { echo "出错消息 --- ", $e->getMessage(), PHP_EOL; } try { $name = $name->method(); } catch (\Throwable $e) { echo "出错消息 --- ", $e->getMessage(), PHP_EOL; } try { intp(5, 0); } catch (\pisionByZeroError $e) { echo "出错消息 --- ", $e->getMessage(), PHP_EOL; }
13. Kombinationsanweisung verwenden
Kombinationsanweisung verwenden kann die Eingaberedundanz der Verwendung verringern.use PHPGoodTaste\Utils\{ Util, Form, Form\Validation, Form\Binding };
14. Mehrere Arten von Ausnahmen/Fehlern gleichzeitig abfangen
PHP 7.1 hat eine neue Syntax zum Abfangen mehrerer Ausnahme-/Fehlertypen hinzugefügt – über die vertikale Leiste „|“.try { throw new LengthException("LengthException"); // throw new pisionByZeroError("pisionByZeroError"); // throw new Exception("Exception"); } catch (\pisionByZeroError | \LengthException $e) { echo "出错消息 --- ", $e->getMessage(), PHP_EOL; } catch (\Exception $e) { echo "出错消息 --- ", $e->getMessage(), PHP_EOL; } finally { // ... }
15. Änderungen an Sichtbarkeitsmodifikatoren
Klassenkonstanten vor PHP 7.1 dürfen derzeit keine Sichtbarkeitsmodifikatoren hinzufügen. PHP 7.1 fügt Unterstützung für Sichtbarkeitsmodifikatoren für Klassenkonstanten hinzu. Im Allgemeinen ist der Verwendungsbereich von Sichtbarkeitsmodifikatoren wie folgt:Funktion/Methode: öffentlich, privat, geschützt, abstrakt, endgültig
Klasse: abstrakt, endgültig
Attribut/Variable: öffentlich, privat, geschützt Klasse Konstanten: öffentlich, privat, geschützt
class YourClass { const THE_OLD_STYLE_CONST = "One"; public const THE_PUBLIC_CONST = "Two"; private const THE_PRIVATE_CONST = "Three"; protected const THE_PROTECTED_CONST = "Four"; }
iterierbarer Pseudotyp
PHP 7.1 führte den iterierbaren Pseudotyp ein. Der iterierbare Typ gilt für Arrays, Generatoren und Objekte, die Traversable implementieren, einen reservierten Klassennamen in PHP.$fn = function (iterable $it) : iterable { $result = []; foreach ($it as $value) { $result[] = $value + 1000; } return $result; }; $fn([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
Nullable Type
PHP 7.1 hat den Nullable Type eingeführt. Schauen Sie sich eine der Gimmick-Funktionen der aufkommenden Programmiersprache Kotlin an: Nullable-Typen. PHP wird immer mehr zu einer „stark typisierten Sprache“. Für obligatorische Anforderungen desselben Typs können Sie festlegen, ob Nullwerte zulässig sind.$fn = function (?int $in) { return $in ?? "NULL"; }; $fn(null); $fn(5); $fn(); // TypeError: Too few arguments to function {closure}(), 0 passed in ...
function first(): void { // ... } function second(): void { // ... return; }
Das obige ist der detaillierte Inhalt vonVorstellung der neuen Funktionen und Leistungsoptimierung des PHP7- und PHP5-Vergleichs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!