Heim  >  Artikel  >  Backend-Entwicklung  >  Neue Funktion von PHP 7.2: Parametertypdeklaration (mit Code)

Neue Funktion von PHP 7.2: Parametertypdeklaration (mit Code)

不言
不言Original
2018-08-08 16:55:346078Durchsuche

Die PHP7.2-Version verfügt über neue Features, Funktionen und Verbesserungen, die es uns ermöglichen, besseren Code zu schreiben. Im folgenden Artikel werde ich eine neue Funktion in PHP7.2 vorstellen: Nicht viel zu sagen, nehmen wir einen genaueren Blick auf den Textinhalt.

Parametertypdeklaration

Ab PHP 5 können wir die erwarteten Parametertypen in der Deklaration der Funktion angeben. 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“.

Parametertyp-Kulanzdeklaration

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.

Empfohlene verwandte Artikel:

PHP5.5 ~ PHP7.2-Sammlung neuer Funktionen – persönlicher Artikel

Einführung in die Leistung der PHP7.2-Version

Neue Funktionen von PHP7.2

Das obige ist der detaillierte Inhalt vonNeue Funktion von PHP 7.2: Parametertypdeklaration (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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