Übersicht meiner Lieblingsfunktionen von PHP7


Wenn Leute über Änderungen in PHP7 sprechen, hören Sie am häufigsten eine deutlich verbesserte Engine, die beim Vergleich gängiger PHP-Anwendungen wie Drupal, WordPress und MediaWiki eine schnellere Ausführungsgeschwindigkeit und deutlich weniger Speicher bietet.


Versteh mich nicht falsch, das ist natürlich alles großartig! Ich konnte mehrere ältere CodeIgniter-Anwendungen auf PHP7 portieren und mit ein paar Änderungen in der Codebasis eine viel bessere Leistung erzielen. PHP7 fügt jedoch auch einige neue Funktionen hinzu, mit denen Sie vorhandenen Code optimieren oder die Qualität beim Schreiben von neuem Code verbessern können. Hier habe ich einige meiner ausgewählten Funktionen beschrieben.


Skalarparameter und Rückgabe des deklarierten Typs


PHP hatte Typdeklarationen bis Version 7, war jedoch nur auf Objekte und Arrays beschränkt. PHP7 bietet jetzt Unterstützung für alle Skalartypen und bietet zwei verschiedene Typdeklarationen.


Erzwungen:


Dies ist der Standarddeklarationstyp und bedeutet einfach, dass die PHP-Laufzeit bei Bedarf versucht, Werte umzuwandeln. Nehmen Sie zum Beispiel den folgenden Code.


<?php function reverseString(String $str) : String { return strrev($str); } print(reverseString(1234)); 

Wir geben an, dass der Parameter $str vom Typ String und dass der Rückgabewert auch vom Typ String . Wenn wir also die Nummer 1234 übergeben, wird sie zwangsweise in die Zeichenfolge "1234" übersetzt und fehlerfrei übersetzt.


Streng:


Der zweite, strenge Typ wird mithilfe des Flags aktiviert, das am Anfang jeder Datei hinzugefügt wird. Wenn es aktiviert ist, wandelt der Interpreter den Typ nicht um, wie im obigen Beispiel, er antwortet mit einem Fehler und stoppt das Skript.


 <?PHP declare(strict_types = 1); function reverseString(String $str): String { return strrev($str); } print (reverseString(1234)); 

Wenn Sie am Anfang der Datei eine einzelne declare im selben Code wie zuvor hinzufügen, wird jetzt die folgende Fehlermeldung angezeigt:


Schwerwiegender Fehler: Nicht erfasster Typfehler: Das an reverseString () übergebene Argument 1 muss vom Typ string sein, wobei eine Ganzzahl angegeben wird

Ein kleiner Zusatz: Wenn Sie den strengen Modus aktivieren, gilt dies auch für die integrierten Funktionen und PHP-Funktionen, die von Erweiterungen geladen werden.


Null Operator ??


Im Gegensatz zu einigen Sprachen, in denen Sie den Variablennamen als Ausdruck im if Ausdruck verwenden und davon ausgehen können, dass der Wert false ist, wenn der Wert nicht definiert oder leer ist, gibt PHP einen Fehler über eine undefinierte Variable, einen Index usw. aus. Dies macht es zu einem sehr ausführlichen, regulären Code, der if als andere Sprachen verwendet, wie im folgenden Beispiel.


  <?php if(!isset($_GET['key'])) { $key = 'default-value'; } else { $key = $_GET['key']; } 

Auch bei Verwendung des ternären Operators ist die isset Funktion erforderlich. Mit dem neuen Nulloperator ?? Sie können den Code erheblich vereinfachen:


  <?PHP $key = $_GET['key'] ?? 'default_value'; 

Diese Verwendung ist noch effizienter in Verkettungsfällen, in denen eine oder mehrere andere if erforderlich sind.


  <?php if (isset($_GET['key']) { $key = $_GET['key']; } else if(isset($_POST['key'])) { $key = $_POST['key']; } else { $key = 'default value'; } // Versus $key = $_GET['key'] ?? $_POST['key'] ?? 'default value'; 

Kleiner Zusatz: Wenn Sie mit JavaScript arbeiten, können Sie Folgendes tun:


 const value = 0 || false || 'hello'; console.log(value); // hello 

Dies funktioniert in PHP nicht und der entsprechende PHP-Code setzt den Wert auf 0, da der neue Operator nur mit null .


Gruppenbenutzungserklärungen


In früheren Versionen von PHP konnten Sie mit der use-Deklaration nur ein Element (Klasse, Funktion, Konstante) aus einem bestimmten Namespace in einem einzelnen Ausdruck importieren. Dies führte häufig zu sehr sich wiederholendem Code, wie im folgenden Beispiel.


 <?php use VendorName/LibraryName/ClasName1; use VendorName/LibraryName/ClasName2; use VendorName/LibraryName/ClasName3; 

Beim Gruppieren kann das Obige abgekürzt werden, wie im folgenden Beispiel gezeigt, wodurch Sie einen saubereren und intuitiveren Code erhalten, was importiert wird und von wo.


 <?php use VendorName/LibraryName/{ClasName1, ClassName2. ClassName3}; 

Konstante Arrays


Benannte Konstanten sind ein sehr wertvolles Werkzeug in PHP. Ein häufiger Anwendungsfall besteht darin, die Lesbarkeit des Codes zu verbessern, indem semantische Namen für beliebige Daten wie Farben, RGB-Werte oder magische Zahlen im Code bereitgestellt werden, die nicht eindeutig sind und in anderen Fällen verwirrend sein können.
Jeder, der lange Zeit mit PHP gearbeitet hat, hat höchstwahrscheinlich eine Anwendung mit einer konstanten Datei (oder sogar mehreren Dateien) gesehen, die Dutzende, wenn nicht Hunderte von benannten Konstanten enthält und lange und beschreibende Namen benötigt, um Namenskonflikte zu vermeiden.


 <?php define('COLOR_RED', '#f44141'); define('COLOR_BLUE', '#4286f4'); define('COLOR_GREEN', '#1ae01e'); define('COLOR_PURPLE', '#f309f7'); define('COLOR_ORANGE', '#ef7700'); 

Benannte Konstanten können zusätzlich zu den zuvor unterstützten Datentypen entweder indizierte oder assoziative Arrays sein. Dies hilft dabei, viele benannte Konstanten, die Sie möglicherweise in Ihrer Anwendung haben, genauer zu gruppieren.


 <?php //     define('COLORS', [ 'red' => '#f44141', 'blue' => '#4286f4', 'green' => '#1ae01e', 'purple' => '#f309f7', 'orange' => '#ef7700', ]); echo(COLORS['red']); // #f44141 //    define('COLORS', [ 'red', 'blue', 'green', 'purple', 'orange', ]); echo(COLORS[0]); // 'red' 

Fazit


Es gibt einige weitere großartige neue Funktionen, die ich nicht erwähnt habe, wie anonyme Klassen und den Raumschiffbetreiber. Weitere Informationen finden Sie in der PHP.net-Dokumentation. Vielen Dank, dass Sie sich die Zeit genommen haben, dies alles zu lesen. Bitte hinterlassen Sie unten Fragen oder Kommentare.


danke berez für die kommentare.

Source: https://habr.com/ru/post/de419625/


All Articles