Heim > Backend-Entwicklung > PHP7 > Vorstellung der neuen Funktionen und Leistungsoptimierung des PHP7- und PHP5-Vergleichs

Vorstellung der neuen Funktionen und Leistungsoptimierung des PHP7- und PHP5-Vergleichs

coldplay.xixi
Freigeben: 2023-02-17 21:08:02
nach vorne
1993 Leute haben es durchsucht

Vorstellung der neuen Funktionen und Leistungsoptimierung des PHP7- und PHP5-Vergleichs

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:

PHP7

2 TLS:

Thread-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 Parametern

8. Null-Coalesce-Operator (Null-Coalesce-Operator)

Direkt zum Beispiel:

$name = $name ?? "NoName";  // 如果$name有值就取其值,否则设$name成"NoName"
Nach dem Login kopieren

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);
Nach dem Login kopieren

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...
Nach dem Login kopieren

11. Einheitliche Variablensyntax

$goo = [
    "bar" => [
        "baz" => 100,
        "cug" => 900
    ]
];

$foo = "goo";

$$foo["bar"]["baz"];  // 实际为:($$foo)[&#39;bar&#39;][&#39;baz&#39;]; PHP 5 中为:${$foo[&#39;bar&#39;][&#39;baz&#39;]};
                      // PHP 7 中一个笼统的判定规则是,由左向右结合。
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

13. Kombinationsanweisung verwenden

Kombinationsanweisung verwenden kann die Eingaberedundanz der Verwendung verringern.

use PHPGoodTaste\Utils\{
    Util,
    Form,
    Form\Validation,
    Form\Binding
};
Nach dem Login kopieren

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 {
    // ...
}
Nach dem Login kopieren

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";
}
Nach dem Login kopieren

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]);
Nach dem Login kopieren

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 ...
Nach dem Login kopieren

    Void-Rückgabetyp
  • PHP 7.1 hat den Void-Rückgabetyp eingeführt.
  • function first(): void {
        // ...
    }
    
    function second(): void {
        // ...
        return;
    }
    Nach dem Login kopieren

    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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage