PHP - Grundlagen - Funktionen - Parameter
1. Noch und nöcher
Manchmal weiß man zu Beginn einer Funktion gar nicht, wie viele Parameter man benötigt. Also haut man einen an den anderen rein und dasselbe Spielchen wiederholt sich dann beim Funktionsaufruf. Doch seit PHP4 ist das nun nicht mehr nötig, denn da gibt es ein paar schöne Möglichkeiten.
2. Optionale Parameter
Manchmal kann es vorkommen, dass eine Funktion an mehreren Stellen genutzt wird, aber nicht alle Parameter benötigt werden. Die erste Möglichkeit wäre, beim Aufruf "leere" Werte zu übergeben, um eine entsprechende Fehlermeldung zu umgehen:
<?php
function doSomething ($bla, $blubb, $blubber)
{
...
}
doSomething ($schwall,'','');
?>
Das kann dann schon mal ziemlich ausarten. Daher besteht die Möglichkeit, bei optionalen Parametern bereits in der Funktionsdefinition Standardwerte vorzugeben. Dann muss man beim entsprechenden Aufruf nur noch die Parameter angeben, die wirklich benötigt werden:
<?php
function doSomething ($bla, $blubb = '', $blubber = false)
{
...
}
doSomething ($schwall);
?>
Wichtig
... ist die Reihenfolge der Parameter. Zuerst kommen all die, wo man definitiv einen Wert übergeben muss, und dann erst
die optionalen. Ansonsten produziert man einen Fehler! Auch muss man bei den optionalen Parametern auf die Reihenfolge achten. Will man
zum Beispiel im oberen Code nur den Wert für $blubber
übergeben, so muss man für das $blubb
einen Leerwert
setzen.
<?php
...
doSomething ($schwall, '', $laber);
?>
3. func_irgendwas
Bei den folgenden Funktionen muss man auf drei grundsätzliche Dinge achten:
- Bei selbst definierten Funktionen müssen keine Parameter mehr angegeben werden.
- Sie dürfen nur innerhalb von selbst definierten Funktionen aufgerufen werden.
- Wenn man einen entsprechenden Wert weiter verarbeiten möchte, so muss der vorher in einer Variablen gespeichert werden.
func_num_args
Ermittelt die Anzahl der übergebenen Parameter. Anhand des Ergebnisses kann man schon eine erste Fallunterscheidung treffen.
<?php
function bla ()
{
if (func_num_args() > 2)
{
doThis();
}
else
{
doThat();
}
}
bla('blubb','blubber','laber');
?>
func_get_args
Ermittelt alle Parameter und schreibt sie in ein numerisches Array. Nun kann man über den entsprechenden Index darauf zugreifen.
<?php
function bla ()
{
$params = func_get_args();
print_r ($params);
}
bla('blubb','blubber','laber');
?>
func_get_arg
Hier hat man direkten Zugriff auf einen Parameter anhand seines numerischen Indexes. Ist der angegebene Wert größer als die Anzahl der tatsächlichen Parameter, so wird eine entsprechende Warnung ausgegeben.
<?php
function bla ()
{
$blubb = func_get_arg(1);
echo $blubb;
}
bla('blubb','blubber','laber');
?>
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt