PHP 7 führt Rückgabetypdeklarationen ein . Das heißt, ich kann jetzt angeben, dass der Rückgabewert eine bestimmte Klasse, Schnittstelle, ein bestimmtes Array, ein aufrufbarer oder einer der neu anzeigbaren Skalartypen ist, wie dies für Funktionsparameter möglich ist.
function returnHello(): string {
return 'hello';
}
Oft kommt es vor, dass ein Wert nicht immer vorhanden ist und Sie entweder einen Typ oder null zurückgeben. Während Sie Parameter auf Null setzen können, indem Sie ihren Standardwert auf null ( DateTime $time = null
) setzen, scheint es für Rückgabetypen keine Möglichkeit zu geben, dies zu tun. Ist das tatsächlich der Fall oder finde ich irgendwie nicht heraus, wie es geht? Diese funktionieren nicht:
function returnHello(): string? {
return 'hello';
}
function returnHello(): string|null {
return 'hello';
}
php
nullable
return-type
type-hinting
php-7
Jeroen De Dauw
quelle
quelle
function returnString(?string $stringNull) : ?string { return $stringNull;}
Trowable
Schnittstelle zu verwenden (insbesondere die zu erweiternTypeError
)Antworten:
PHP 7.1 unterstützt jetzt nullfähige Rückgabetypen . Der erste RFC, mit dem ich verbunden bin, ist der, für den sie sich entschieden haben:
alte Antwort:
Da mein Kommentar eigentlich eine Antwort auf die Frage war:
PHP 7 unterstützt noch keine nullbaren Rückgabetypen, aber es gibt einen RFC , der genau das behebt. Er soll in PHP 7.1 landen. Wenn dies erfolgreich ist, wirkt sich die Syntax auf alle Typhinweise aus (sowohl Rückgabetypen als auch Typhinweise):
Es gibt auch einen konkurrierenden RFC zum Hinzufügen von Unionstypen, die das Gleiche tun könnten, aber anders aussehen würden:
Im Moment müssen Sie jedoch schreiben:
Oder geben Sie einfach eine leere Zeichenfolge zurück, um mit dem Rückgabetyp übereinzustimmen, und überprüfen Sie den falschen Wert:
quelle
PHP 7 won't support nullable return-types just yet, but there's an RFC out to address just that
- Ja, RFC, "gerade noch". Versteh mich nicht falsch - ich bin ein sehr starker PHP-Benutzer seit wirklich beschissenen PHP3-Zeiten bis jetzt, keine Lücken, aber als ich all diese RFCs sah, die sie für 7 abgelehnt haben, war mein Eindruck nur "WTF?!". Benutzer sehen das Durcheinander und sind bereit, es abwärtskompatibel zu bereinigen , und sie erhalten nur "Nein". Saubere Methoden, die Chaos benennen? Behoben,null
nicht zu spezieller Bürger zu sein? Nein, nicht benötigt. Option hinzufügen , um alle Dinge zwischen Groß- und Kleinschreibung zu unterscheiden? Nein. Und dann überraschen Sie, dass die Leute wechseln.var
. B. veraltet ). Was schade ist, dass sie stattdessen eine zu viele nette Sachen akzeptiert haben (zum Beispiel Raumschiffbetreiber)Nullable Typen sind in PHP 7.1 verfügbar.
Dies ist ein Syntaxbeispiel:
PHP 7.1 ist jetzt GA und Sie können ein Upgrade von PHP 7.0 durchführen (es gibt nur wenige rückwärts inkompatible Änderungen , die Sie überprüfen müssen).
quelle
Es funktioniert mit jedem Typ.
Beispiel:
quelle