Optionale Parameter
Rouven
- php
0 Harry
Hallo,
ich möchte einmal wissen, in wie weit in PHP optionale Parameter unterstützt werden.
Folgende Lösung(en) habe ich schon gesehen:
Mein Problem gestaltet sich aber anders, und von ASP weiß ich, dass man auch Parameter in der Mitte auslassen können müsste - falls das hier auch geht:
Ich habe eine mehrsprachige Seite, damit muss meine Funktion entscheiden in welcher Sprache Sie z.B. die Fehlermeldung ausgibt.
Nun habe ich im Quellcode einerseits die sprachspezifischen Funktionen (sagen wir mal "AddiereZweiZahlenInDeutsch") aber auch die allgemeinen Funktionen ("OeffneDatenbank"). Ich möchte nun eine Fehlerfunktion, die ich im ersten Fall mit fehler("das ist passiert", ...) und im zweiten Fall mit ("das ist passiert", "this happened", ...) aufrufe.
Das Problem liegt ja wohl bei den "...", so dass ich da nicht einfach mal was weglassen kann.
Kann mir da gerade mal jemand einen kurzen Denkanstoss geben?
Thanx,
Rouven
Holladiewaldfee,
Mein Problem gestaltet sich aber anders, und von ASP weiß ich, dass man auch Parameter in der Mitte auslassen können müsste - falls das hier auch geht:
Nein, das geht bei PHP nicht. Weglassen kannst Du nur Parameter, die hinten stehen.
Ciao,
Harry
Moin!
Mein Problem gestaltet sich aber anders, und von ASP weiß ich, dass man auch Parameter in der Mitte auslassen können müsste - falls das hier auch geht:
Nein, das geht bei PHP nicht. Weglassen kannst Du nur Parameter, die hinten stehen.
Man kann der Funktion eine beliebige Anzahl von Parametern übergeben. Diese müssen in der function-Definition nicht aufgeführt sein. Und man kann dann aus den übergebenen Parametern auch irgendwie (das ist Aufgabe des Programmierers) rausfinden, welchen Sinn die Parameter haben sollen.
http://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-list
Das Problem ist: Wenn man wirklich beliebige, gleichartige Werte übergibt (beispielsweise einen, zwei, drei oder vier Strings), dann ist es ziemlich schwer für die Funktion, die Parameter richtig zuzuordnen.
Beispiel: Wenn du eine Funktion schreibst, die wahlweise einen deutschen String, einen englischen String oder beide entgegennimmt - wie soll die Funktion bei nur einem String erkennen, ob es ein deutscher oder englischer String ist?
Wenn du Parameter in der Funktionsdefinition angibst und einige davon variabel sind, dann hast du die Pflicht, entweder keinen String, einen deutschen String oder einen deutschen _und_ einen englischen String anzugeben - und PHP weiß, welcher String wie zuzuordnen ist.
Wahlweise kannst du natürlich einfach ein Array bzw. einen Hash übergeben, in dem die Strings entsprechend eingetragen und gekennzeichnet sind:
$text = array ('de' => "deutscher String", 'en' => "english string");
variable_funktion($text);
Die Funktion kann auf das Vorhandensein von 'de' und 'en' variabel prüfen und weiß immer, was deutsch und was englisch ist.
- Sven Rautenberg