PHP 7.1 oder neuer (veröffentlicht am 2. Dezember 2016)
Sie können eine Variable explizit für null
diese Syntax deklarieren
function foo(?Type $t) {
}
Dies führt zu
$this->foo(new Type()); // ok
$this->foo(null); // ok
$this->foo(); // error
Wenn Sie also ein optionales Argument wünschen, können Sie der Konvention folgen. Type $t = null
Wenn Sie ein Argument dazu bringen müssen, beide null
und seinen Typ zu akzeptieren , können Sie dem obigen Beispiel folgen.
Sie können mehr lesen hier .
PHP 7.0 oder älter
Sie müssen einen Standardwert wie hinzufügen
function foo(Type $t = null) {
}
Auf diese Weise können Sie einen Nullwert übergeben.
Dies ist im Abschnitt im Handbuch über Typdeklarationen dokumentiert :
Die Deklaration kann so erfolgen, dass NULL
Werte akzeptiert werden, wenn der Standardwert des Parameters auf gesetzt ist NULL
.
function foo(Type $t)
eine SEHR gute Sache; siehe Null Referenzen: Der Milliarden-Dollar-FehlerAb PHP 7.1 stehen nullfähige Typen als Funktionsrückgabetypen und Parameter zur Verfügung. Der Typ
?T
kann Werte des angegebenen Typs habenT
, odernull
.Ihre Funktion könnte also folgendermaßen aussehen:
Sobald Sie mit PHP 7.1 arbeiten können, sollte diese Notation vorgezogen werden
function foo(Type $t = null)
, da der Aufrufer dennoch gezwungen ist, explizit ein Argument für den Parameter anzugeben$t
.quelle
Versuchen:
Überprüfen Sie die Argumente der PHP-Funktion .
quelle
Wie bereits erwähnt, ist dies nur möglich, wenn Sie dies angeben
null
als Standardwert .Die sauberste typsichere objektorientierte Lösung wäre jedoch ein NullObject :
Verwendung:
quelle
NullFoo
gezwungen, abstrakte Methoden zu überschreiben, obwohl sie (per Definition vonnull
) keine Bedeutung haben .if (something is null)
gedacht ist, Überprüfungen zu vermeiden , da das NullObject das gesamte Verhalten eines nicht vorhandenen Werts abdecken soll und kein externer Mitarbeiter daran interessiert sein sollte, ob ein Objekt ist nicht vorhanden (null) oder nicht.