dedlfix: Type Hinting und optionale Parameter

Beitrag lesen

echo $begrüßung;

function foobar (Foo $foo, Bar $bar, $baz = 0) {
$foo->foobar($foo, null, 1);

NULL ist offensichtlich nicht einsetzbar als eine Art Platzhalter für "leere" Objekte, analog zu '' bei Strings [...] PHP meckert mit einem "Fatal error: Argument 2 passed to Foo::foobar() must not be null".

null ist ein anderer Typ als object (oder in diesem Fall Bar) und entspricht deshalb nicht der Type-Hint-Vorgabe.

oder eben der Nullpointer in anderen Sprachen.

PHP ist PHP. Andere Sprachen sind andere Sprachen.

Setze ich als zweite Variante im Funktionskopf...
function foobar (Foo $foo, Bar $bar = null, $baz = 0)
... gibt es das Gemecker nicht mehr in PHP 5.1, aber dafür in Version 5.0. Ob das tatsächlich von der Version abhängt oder doch an einem Unterschied in der Konfiguration liegt, konnte ich bisher nicht herausfinden.

PHP-Changelog Version 5.1.0: "Changed type hints to allow "null" as default value for class and array."

Gibt es einen vernünftigen[TM] Weg, um ein Objekt in der Parameterliste wahlweise auszulassen oder anders eindeutig als Sonderfall zu kennzeichnen?

Was spricht denn gegen die Defaultwert-Angabe?

echo "$verabschiedung $name";