In diesem Artikel werden Ihnen die neuen Funktionen jeder Version von PHP7.x vorgestellt. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Letzten Monat sah mich mein Kollege
$a = $a ?? '';
schreiben und fragte mich, was das für eine Schreibweise sei. Gibt es eine andere Schreibweise? Ich sagte, dass dies eine Schreibmethode ist, die nur in PHP7 und höher verfügbar ist. Wissen Sie nicht? Er sagte, er wisse es nicht.
Ich murmelte in meinem Herzen und hatte vor, mit dem Schreiben dieses Blogs zu beginnen.
PHP7 sollte zusätzlich zu den Grundlagen ein modernes PHP sein. Da es in PHP7, starken Typdefinitionen und einigen grammatikalischen Schreibmethoden, wie z. B. kombinierten Vergleichsoperatoren, vorkam, kann define() Arrays und andere Funktionen definieren. Die formelle Einführung beginnt unten, beginnend mit PHP7.0. In Zukunft werden neue Versionen hinzugefügt, und zwar eine nach der anderen.
Okay, fangen wir an
Was ist ein Skalartyp? 🔜
Objekt (Objekt)Spaceship-OperatorEine Ressource ist eine spezielle Variable, die einen Verweis auf eine externe Ressource enthält. Ressourcen werden durch spezielle Funktionen erstellt und genutzt. Ressourcentypvariablen sind spezielle Handles zum Öffnen von Dateien, Datenbankverbindungen, Grafikbereichen usw.
Einfacher ausgedrückt ist ein Skalartyp ein Datentyp, der Variablen definiert.
In PHP5 gibt es Klassennamen, Schnittstellen, Arrays und Rückruffunktionen. In PHP wurden Strings, Integer-, Float- und Bool-Werte hinzugefügt. Schauen wir uns unten das Beispiel an. Hier definieren wir, dass $a vom Typ int sein muss. Wenn in der Typfunktion ein Fehler gemeldet wird. Ändern wir den obigen Code und es ist richtig.Rückgabewerttypdeklaration Der Rückgabewert einer Funktionsmethode kann beispielsweise definiert werden, wenn eine Funktion von mir einen int-Typ zurückgeben muss, wird sie definitiv einen int-If zurückgeben Wenn Sie eine Zeichenfolge zurückgeben, wird ein Fehler gemeldet. Wie folgtfunction typeInt(int $a) { echo $a; } typeInt('sad'); // 运行,他讲会报错 Fatal error: Uncaught TypeError: Argument 1 passed to type() must be of the type integer, string givenNach dem Login kopierenWas wäre, wenn wir ein Array definieren und einen String oder andere Typen zurückgeben würden?function typeString(string $a) { echo $a; } typeString('sad'); //sadNach dem Login kopierenDann meldet er einen Fehler wie
<?php function returnArray(): array { return [1, 2, 3, 4]; } print_r(returnArray()); /*Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) */Nach dem Login kopierenNull-Koaleszenzoperator
Aufgrund einer großen Anzahl von Situationen, in denen ternäre Ausdrücke und isset() im täglichen Gebrauch gleichzeitig verwendet werden, haben wir den Null-Koaleszieroperator (?? ) Syntaxzucker. Wenn die Variable existiert und nicht NULL ist, gibt sie ihren eigenen Wert zurück, andernfalls gibt sie ihren zweiten Operanden zurück.
function returnErrorArray(): array { return '1456546'; } print_r(returnErrorArray()); /* Array Fatal error: Uncaught TypeError: Return value of returnArray() must be of the type array, string returned in */Nach dem Login kopieren
<?php $username = $_GET['user'] ?? 'nobody'; //这两个是等效的 当不存在user 则返回?? 后面的参数 $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; ?>
// 整数 echo 1 <=> 1; // 0 当左边等于右边的时候,返回0 echo 1 <=> 2; // -1 当左边小于右边,返回-1 echo 2 <=> 1; // 1 当左边大于右边,返回1 // 浮点数 echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // 字符串 echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1
define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1]; // 输出 "cat"
// PHP 7 之前的代码 use some\namespace\ClassA; use some\namespace\ClassB; use some\namespace\ClassC as C; use function some\namespace\fn_a; use function some\namespace\fn_b; use function some\namespace\fn_c; use const some\namespace\ConstA; use const some\namespace\ConstB; use const some\namespace\ConstC; // PHP 7+ 及更高版本的代码 use some\namespace\{ClassA, ClassB, ClassC as C}; use function some\namespace\{fn_a, fn_b, fn_c}; use const some\namespace\{ConstA, ConstB, ConstC};
echo "\u{aa}"; //ª echo "\u{0000aa}"; //ª echo "\u{9999}"; //香
PHP 7.1
Typen von Parametern und Rückgabewerten können jetzt nullbar gemacht werden, indem vor dem Typ ein Fragezeichen hinzugefügt wird. Wenn diese Funktion aktiviert ist, sind die übergebenen Parameter oder das von der Funktion zurückgegebene Ergebnis entweder vom angegebenen Typ oder null .
<?php interface Logger { public function log(string $msg); } class Application { private $logger; public function getLogger(): Logger { return $this->logger; } public function setLogger(Logger $logger) { $this->logger = $logger; } } $app = new Application; $app->setLogger(new class implements Logger { //这里就是匿名类 public function log(string $msg) { echo $msg; } });
<?php function testReturn(): ?string { return 'elePHPant'; } var_dump(testReturn()); //string(10) "elePHPant" function testReturn(): ?string { return null; } var_dump(testReturn()); //NULL function test(?string $name) { var_dump($name); } test('elePHPant'); //string(10) "elePHPant" test(null); //NULL test(); //Uncaught Error: Too few arguments to function test(), 0 passed in...
Mehrfache Ausnahmeerfassungsverarbeitung
<?php function swap(&$left, &$right) : void { if ($left === $right) { return; } $tmp = $left; $left = $right; $right = $tmp; } $a = 1; $b = 2; var_dump(swap($a, $b), $a, $b);
PHP 7.2
<?php try { // some code } catch (FirstException | SecondException $e) { //用 | 来捕获FirstException异常,或者SecondException 异常 }
Überschreiben abstrakter Methoden zulassen
<?php use Foo\Bar\{ Foo, Bar, Baz, };
<?php abstract class A { abstract function test(string $s); } abstract class B extends A { // overridden - still maintaining contravariance for parameters and covariance for return abstract function test($s) : int; }
PHP 7.3
PHP 7.4
Herzlichen Glückwunsch, dass PHP einen weiteren Schritt in Richtung starker Typisierung gemacht hat
<?php function test(object $obj) : object //这里 可以输入对象 { return new SplQueue(); } test(new StdClass());
Pfeilfunktionen
Pfeilfunktionen bieten eine Kurzsyntax zum Definieren von Funktionen mithilfe impliziter Bereichsbindung nach Wert. Es ähnelt der Pfeilfunktion von JS, jedoch mit einem fn. Eine Welle von Beschwerden
Das obige ist der detaillierte Inhalt vonWas sind die neuen Funktionen in jeder Version von PHP7.x?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!