PHP 7.2 wurde offiziell mit neuen Features, Funktionen und Verbesserungen veröffentlicht, die es uns ermöglichen, besseren Code zu schreiben. In diesem Artikel stelle ich einige der interessantesten Sprachfunktionen in PHP 7.2 vor – Parametertypdeklarationen.
Empfohlen: „PHP7-Tutorial“
Parametertypdeklaration
Ab PHP 5 können wir die Funktion in deklarieren Gibt den Typ der Parameter an, die voraussichtlich übergeben werden. Wenn der angegebene Wert vom falschen Typ ist, gibt PHP einen Fehler aus. Eine Parametertypdeklaration (auch Typhinweis genannt) gibt den Typ der Variablen an, die voraussichtlich an eine Funktion oder Klassenmethode ü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);
In diesem Code erfordert die Testfunktion eine Instanz von MyClass. Falsche Datentypen führen zu folgendem 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
Seit PHP 7.2 können Typhinweise mit Objektdatentypen verwendet werden, und diese Verbesserung ermöglicht die Deklaration generischer Objekte als Parameter von Funktionen oder Methoden. 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);
In diesem Beispiel rufen wir die Testfunktion zweimal auf und übergeben bei jedem Aufruf ein anderes Objekt. Dies war in früheren PHP-Versionen nicht möglich.
Objektrückgabetypdeklaration
Wenn die Parametertypdeklaration die erwarteten Typen der Funktionsparameter angibt, gibt die Rückgabetypdeklaration den erwarteten Typ des Rückgabewerts an.
Die Rückgabetypdeklaration gibt den Typ der Variablen an, die die Funktion zurückgeben soll.
Ab PHP 7.2 dürfen wir Rückgabetypdeklarationen für Objektdatentypen verwenden. Hier ist ein Beispiel:
class MyClass { public $var = 'Hello World'; } $myclass = new MyClass; function test(MyClass $arg) : object { return $arg; } echo test($myclass)->var;
Frühere PHP-Versionen führten zu folgendem schwerwiegenden Fehler:
Fatal error: Uncaught TypeError: Return value of test() must be an instance of object, instance of MyClass returned in /app/index.php:10
Natürlich antwortet dieser Code in PHP 7.2 mit „Hello World“.
Kulanzdeklaration für Parametertypen
PHP erlaubt derzeit keinen Unterschied in den Parametertypen zwischen Unterklassen und ihren übergeordneten Klassen oder Schnittstellen. Was bedeutet das?
Betrachten Sie den folgenden Code:
<?php class MyClass { public function myFunction(array $myarray) { /* ... */ } } class MyChildClass extends MyClass { public function myFunction($myarray) { /* ... */ } }
Hier haben wir die Parametertypen in der Unterklasse weggelassen. In PHP 7.0 erzeugt dieser Code die folgende Warnung:
Warning: Declaration of MyChildClass::myFunction($myarray) should be compatible with MyClass::myFunction(array $myarray) in %s on line 8
Seit PHP 7.2 dürfen wir Typen in Unterklassen weglassen, ohne Code zu beschädigen. Dieser Vorschlag ermöglicht es uns, Klassen zu aktualisieren, um Typhinweise in der Bibliothek zu verwenden, ohne alle Unterklassen aktualisieren zu müssen.
Nachgestelltes Komma in der Listensyntax
Nachgestelltes Komma nach dem letzten Element im Array ist eine gültige Syntax in PHP, manchmal um neue Elemente einfach anzuhängen und zu vermeiden, dass aufgrund fehlender Kommas eine Analyse auftritt Bei Fehlern wird die Verwendung empfohlen. Seit PHP 7.2 dürfen wir bei der Gruppierung von Namespaces abschließende Kommas verwenden.
Weitere Informationen zu diesem RFC und einigen Codebeispielen finden Sie unter Nachgestellte Kommas in der Listensyntax.
Das obige ist der detaillierte Inhalt vonNeue Funktionen in PHP7.2 (Parametertypdeklaration). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!