Inhaltsverzeichnis
Kernverbesserungen
Parametertypdeklaration
Deklaration des Objektrückgabetyps
Parametertyp-Generalisierung
Nachgestellte Kommas in der Listensyntax
Sicherheitsverbesserungen
Argon2 beim Passwort-Hashing
Libsodium wird Teil des PHP-Kerns
Veraltete Funktionen
Was bedeutet PHP 7.2 für WordPress-Benutzer?
Upgrade auf PHP 7.2
Fazit
Heim Backend-Entwicklung PHP-Tutorial Einführung in die neuen Funktionen von PHP 7.2

Einführung in die neuen Funktionen von PHP 7.2

May 24, 2018 pm 02:47 PM
php 介绍 新功能

Der Inhalt, der in diesem Artikel mit Ihnen geteilt wird, handelt von der Einführung der neuen Funktionen von PHP 7.2. Er hat einen gewissen Referenzwert.

PHP 7.2 wurde im November offiziell veröffentlicht 30. 2017. . Diese Version enthält neue Features, Funktionen und Optimierungen, die uns helfen, besseren Code zu schreiben. In diesem Artikel werde ich einige der interessantesten Sprachfunktionen von PHP 7.2 vorstellen.

Sie können die vollständige Liste der Änderungen auf der Seite „Anfragen für Kommentare“ einsehen.

Kernverbesserungen

Parametertypdeklaration

Ab PHP5 können wir den erwarteten deklarierten Typ von Funktionsparametern angeben. Wenn der falsche Argumenttyp übergeben wird, gibt PHP einen Fehler aus.

Parametertypdeklaration (auch Typhinweis genannt) gibt die Parametertypen an, die voraussichtlich an Funktionen oder Klassenmethoden übergeben werden.

Hier ist ein Beispiel:

class MyClass {
    public $var = 'Hello World';
}$myclass = new MyClass;function test(MyClass $myclass){
    return $myclass->var;
}echo test($myclass);
Nach dem Login kopieren

In diesem Code erfordert die Testfunktion eine MyClass-Instanz. Falsche Parameterdatentypen führen zu einem schwerwiegenden Fehler.

Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of MyClass, string given, called in /app/index.php on line 12 and defined in /app/index.php:8
Nach dem Login kopieren

Seit PHP 7.2 können Typhinweise für Objektdaten verwendet werden, und diese Verbesserung ermöglicht die Verwendung generischer Objekttypen als Parameter einer Funktion oder Methode. Hier ist ein Beispiel:

class MyClass {
    public $var = '';
}class FirstChild extends MyClass {
    public $var = 'My name is Jim';
}class SecondChild extends MyClass {
    public $var = 'My name is John';
}$firstchild = new FirstChild;$secondchild = new SecondChild;function test(object $arg) {
    return $arg->var;
}echo test($firstchild);echo test($secondchild);
Nach dem Login kopieren

Im obigen Beispiel haben wir die Testfunktion zweimal aufgerufen und jedes Mal ein anderes Objekt übergeben. Dies war in früheren PHP-Versionen beispiellos.

Einführung in die neuen Funktionen von PHP 7.2

Typhinweise für PHP 7.0 und PHP 7.2 in Docker testen.

Deklaration des Objektrückgabetyps

Wenn der Variablentyp den erwarteten Typ des Funktionsparameters angibt, kann der Rückgabewerttyp auch den erwarteten Typ angeben.

Die Rückgabetypdeklaration gibt den erwarteten Typ an, den eine Funktion zurückgeben soll.

Seit PHP 7.2 können Objektdatentypen mithilfe von Rückgabetypen deklariert werden. Hier ist ein Beispiel:

class MyClass {
    public $var = 'Hello World';
}

$myclass = new MyClass;function test(MyClass $arg) : object {
    return $arg;
}

echo test($myclass)->var;
Nach dem Login kopieren

Frühere PHP-Versionen haben den folgenden schwerwiegenden Fehler ausgegeben:

Fatal error: Uncaught TypeError: Return value of test() must be an instance of object, instance of MyClass returned in /app/index.php:10
Nach dem Login kopieren

Natürlich würde der PHP 7.2-Code „Hello World“ ausgeben.

Parametertyp-Generalisierung

PHP erlaubt derzeit keinen Unterschied zwischen den Parametertypen einer Unterklasse und ihrer übergeordneten Klasse oder Schnittstelle. Was bedeutet das?
Beziehen Sie sich auf den folgenden Code:

<?phpclass MyClass {
    public function myFunction(array $myarray) { /* ... */ }
}class MyChildClass extends MyClass {
    public function myFunction($myarray) { /* ... */ }
}
Nach dem Login kopieren

Hier haben wir den Parametertyp in der Unterklasse weggelassen. In PHP 7.0 wird die folgende Warnung erzeugt:

Warning: Declaration of MyChildClass::myFunction($myarray) should be compatible with MyClass::myFunction(array $myarray) in %s on line 8
Nach dem Login kopieren

Ab PHP 7.2 können wir Typen in Unterklassen ignorieren, ohne Code zu beschädigen. Mit dieser Lösung können wir eine Klasse in der Bibliothek aktualisieren, um Typhinweise zu verwenden, ohne alle ihre Unterklassen zu aktualisieren.

Nachgestellte Kommas in der Listensyntax

Die Verwendung eines nachgestellten Kommas für das letzte Element eines PHP-Arrays ist eine zulässige Syntax und wird manchmal empfohlen, um das Hinzufügen neuer Elemente zu vermeiden. Ein Fehler wegen fehlendem Komma ist aufgetreten. Seit PHP 7.2 können wir beim Gruppieren von Namespaces abschließende Kommas verwenden.

Siehe Nachgestellte Kommas in der Listensyntax für ein Gefühl für den RFC und einige Beispielcodes.

Sicherheitsverbesserungen

Argon2 beim Passwort-Hashing

Argon2 ist ein leistungsstarker Hashing-Algorithmus, der den Passwort-Hash-Algorithmus-Wettbewerb 2015 gewonnen hat, und PHP 7.2 wird als Ersatz für das sichere Bcrypt dienen Algorithmus.
In der neuen PHP-Version wurde die Konstante PASSWORD_ARGON2I eingeführt, die nun in der Funktionsreihe „password_*“ verwendet werden kann:

password_hash(&#39;password&#39;, PASSWORD_ARGON2I);
Nach dem Login kopieren

Im Gegensatz zu Bcrypt, das nur einen Kostenfaktor verwendet, verwendet Argon2 drei Kostenfaktoren, um sie wie folgt zu unterscheiden:

  • Definiert den Speicher-Overhead in KiB-Menge, der während der Hash-Berechnung verbraucht werden soll (Standard ist 1 << 10 oder 1024 KiB oder 1 MiB)

  • Definieren Sie den Zeitaufwand für die Anzahl der Iterationen des Hash-Algorithmus (Standardwert ist 2)

  • Parallelfaktor, der zum Festlegen des verwendet wird Anzahl paralleler Threads, die in Hash-Berechnungen verwendet werden (Standardwert Definieren Sie Standardkostenfaktoren für 2)

Die folgenden drei neuen Konstanten werden definiert:

  • PASSWORD_ARGON2_DEFAULT_MEMORY_COST

  • PASSWORD_ARGON2_DEFAULT_TIME_COST

  • PASSWORD_ARGON2_DEFAULT_THREADS

Hier ist ein Beispiel :

$options = [&#39;memory_cost&#39; => 1<<11, &#39;time_cost&#39; => 4, &#39;threads&#39; => 2];
password_hash(&#39;password&#39;, PASSWORD_ARGON2I, $options);
Nach dem Login kopieren

Suchen Sie nach Argon2-Passwort-Hashes. Weitere Informationen.

Libsodium wird Teil des PHP-Kerns

Ab Version 7.2 enthält PHP die Sodium-Bibliothek in seinem Kern. Libsodium ist eine plattform- und sprachübergreifende Bibliothek für Verschlüsselung, Entschlüsselung, Signierung, Passwort-Hashing und mehr.
Diese Bibliothek wurde zuvor über PECL bereitgestellt.
Eine Liste der Libsodium-Funktionen finden Sie unter Schnellstart.
Siehe auch PHP 7.2: die erste Programmiersprache, die moderne Kryptographie zu ihrer Standardbibliothek hinzufügt.

Veraltete Funktionen

Hier ist eine Liste veralteter Funktionen und Features für PHP 7.2, die alle nach PHP 8.0 entfernt werden.

Die Funktion __autoload in PHP 5.1 wurde durch spl_autoload_register ersetzt. Während der Kompilierung wird jetzt ein Verfallshinweis angezeigt.

Wenn ein schwerwiegender Fehler ausgelöst wird, $php_errormsg werden lokale Variablen erstellt. In PHP 7.2 sollten stattdessen error_get_last und error_clear_last verwendet werden.

create_function() Sie können eine Funktion mit einem Funktionsnamen erstellen und dabei die Funktionsparameter und den Funktionskörper als Liste der Funktion übergeben. Aufgrund von Sicherheitsproblemen und schlechter Leistung wird es als veraltet markiert und stattdessen die Kapselung empfohlen.

mbstring.func_overload ini, das auf einen Wert ungleich Null gesetzt ist, wurde als veraltet markiert.

(unset) cast ist ein Ausdruck, der immer null zurückgibt und nutzlos ist.

Wenn der zweite Parameter übergeben wird, analysiert parse_str() die Abfragezeichenfolge in ein Array, andernfalls analysiert es die lokale Symboltabelle. Aus Sicherheitsgründen wird nicht empfohlen, Variablen im Funktionsbereich dynamisch festzulegen, und die Verwendung von parse_str() ohne ein zweites Argument führt zu einer veralteten Benachrichtigung.

gmp_random() ist plattformabhängig und wird veraltet sein. Verwenden Sie stattdessen gmp_random_bits() und gmp_random_rage().

each() Das Iterieren über ein Array verhält sich sehr ähnlich wie foreach(), aber foreach() ist aus mehreren Gründen die bessere Wahl, beispielsweise weil es zehnmal schneller ist. Wenn Sie Ersteres in einer Schleife verwenden, wird nun eine Einstellungsaufforderung ausgegeben.

assert() Die Funktion prüft die gegebene Behauptung und führt die entsprechende Verarbeitung durch, wenn das Ergebnis FALSCH ist. assert() mit einem String-Argument ist aufgrund einer RCE-Sicherheitslücke jetzt veraltet. Die Option zend.assertion ini deaktiviert Assertionsausdrücke.

$errcontext ist ein Array, das lokale Variablen enthält, wenn ein Fehler auftritt. Er kann als letzter Parameter der Fehlerhandlerfunktion set_error_handler() verwendet werden.

Was bedeutet PHP 7.2 für WordPress-Benutzer?

Laut der offiziellen WordPress-Statistikseite haben zum Zeitpunkt dieses Schreibens nur 19,8 % der WordPress-Benutzer ein Upgrade auf PHP 7 durchgeführt. Nur 5 % nutzen PHP 7.1. Sie sehen, dass mehr als 40 % der Benutzer immer noch PHP 5.6 verwenden, und was noch erschreckender ist, ist, dass mehr als 39 % der Benutzer eine PHP-Version verwenden, die nicht mehr unterstützt wird. Im Dezember 2016 änderte WordPress.org die offizielle Empfehlung für Benutzer von PHP 5.6 und empfahl nun die Verwendung von PHP 7 oder höher.
WordPress PHP 7.1 stats

WordPress PHP 7.1-Statistiken

Die oben genannte Datenleistung ist nicht angenehm, da es den Anschein hat, dass PHP 7 schneller ist. Hier sind einige Statistiken:

  • Offizielle PHP-Benchmarks zeigen, dass PHP 7 es dem System ermöglicht, 2 Anfragen pro Sekunde auszuführen, was im Vergleich zu PHP 5.6 fast nur einer durchschnittlichen Latenz entspricht.

  • Christian Vigh hat auch einen PHP-Leistungstest-Vergleich veröffentlicht. Er hat herausgefunden, dass PHP 5.2 fast 400 % langsamer ist als PHP 7.

Wir haben 2018 Leistungsbenchmarks PHP 5.6 vs. PHP 7 vs. HHVM durchgeführt. Ähnlich wie beim obigen Benchmark haben wir festgestellt, dass PHP 7.2 im Vergleich zu PHP 5.6 fast dreimal so viele Transaktionen (Anfragen) pro Sekunde ausführen kann.

WordPress benchmarks

WordPress-Benchmark

  • WordPress 4.9.4 PHP 5.6 Benchmark-Ergebnis: 49,18 req/sec

  • WordPress 4.9.4 PHP 7.0 Benchmark-Ergebnis: 133,55 Anforderungen/Sek.

  • WordPress 4.9.4 PHP 7.1 Benchmark-Ergebnis: 134,24 Anforderungen/Sek.

  • WordPress 4.9.4 PHP 7.2 Benchmark-Ergebnis: 148,80 req/sec �

  • WordPress 4.9.4 HHVM Benchmark-Ergebnis: 144,76 req/sec

Viele Dinge lassen sich nur langsamer aktualisieren, da es viel Zeit in Anspruch nimmt, alle neuen Plugins und Themes von Drittanbietern zu testen, um sicherzustellen, dass sie ordnungsgemäß funktionieren. Oft geht es langsam, weil sie noch nicht fertig sind. Sie sind sich nicht sicher, welche PHP-Version Sie verwenden? Eine der einfachsten Möglichkeiten ist die Verwendung des Tools Pingdom oder der Google Chrome-Entwicklungstools. Im ersten HTTP-Anfrageheader wird normalerweise Ihre Version angezeigt.

Check version of PHP

PHP-Version prüfen

Dies setzt voraus, dass der Host den Wert des X-Powered-By-Headers nicht ändert. Wenn es geändert wird, können Sie die PHP-Versionsinformationen möglicherweise nicht sehen. In diesem Fall müssen Sie die Datei per FTP hochladen. Oder Sie fragen immer den Gastgeber.

Upgrade auf PHP 7.2

PHP 7.2 ist noch teilweise unfertig, aber Sie können es zunächst ausprobieren. Sie können Ihre lokale WordPress-Site testen oder Ihre Skripte in einer Docker-ähnlichen Umgebung überprüfen, und Sie können verschiedene PHP-Versionen über die Befehlszeile testen und vergleichen.

Fazit

Bereit für den Umstieg auf PHP 7.2? Aber zumindest hoffen wir, dass Sie zuerst auf PHP 7 oder höher umgestiegen sind. Wenn Sie jetzt noch nicht bereit sind, es zu testen, aktualisieren Sie Ihre Skripte, überprüfen Sie Ihren Code und sprechen Sie über Ihre ersten Erfahrungen mit PHP 7.2.

Verwandte Empfehlungen:

Kompilieren Sie PHP7.2 unter Windows und extrem erweitertem Judy

So installieren Sie PHP7.2 unter Linux

Instanzmethode zur Installation von PHP7.2 unter CentOS7yum

Das obige ist der detaillierte Inhalt vonEinführung in die neuen Funktionen von PHP 7.2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

See all articles