dedlfix: Type Hinting und optionale Parameter

Beitrag lesen

echo $begrüßung;

Hallo Andreas.

Du könntest in der Deklaration die Parameter 2 und 3 weglassen und diese bei Existenz selbst prüfen:

Interessante Alternative. Ich werd mir mal überlegen, ob es sich lohnt, das konsequent umzusetzen oder doch lieber die Aufgabenstellung anzupassen. ;)

Parameter in der Funktionsdeklaration auszulassen und stattdessen über func_get_arg darauf zugreifen ist zwar ein von PHP vorgesehener Weg, den ich aber nur als Ausnahme von der Regel ansehen möchte. Er trägt aber nicht gerade dazu bei, dass diese Programmstelle leichter zu lesen ist. Ich empfehle, in dem Fall die Parameter ohne Type-Hint anzugeben. Eine Typüberprüfung mit is_a()/instanceof *) ist in beiden Fällen erforderlich/angebracht, und den Type-Hint wegzulassen ist deutlich übersichtlicher als die func_get_arg-Methode. Den Aufwand sollte man lieber in eine Dokumentation stecken.**)

/**
 * Allgemeine Funktionsbeschreibung
 *
 * @param Bar $bar Kurzbeschreibung von bar
 * @param Baz/null $baz ...
 * @param integer $bal ...
 * @return type
 */
function foo(Bar $bar, $baz, $bal) {
  if ($baz === null or $baz instanceof Baz)
    ...

echo "$verabschiedung $name";

*) is_a() ist die PHP4-Variante und unter PHP5 deprecated. PHP5 bietet dagegen den instanceof-Operator.
**) Entwicklungsumgebungen mit PHPDoc-Unterstützung wissen diese Art Dokumentation zu schätzen. Und Anwender dieser Entwicklungsumgebungen freuen sich ebenfalls darüber.