Parameter in PHP-Funktionen

Bei der Deklaration von PHP-Funktionen werden innerhalb der runden Klammern kommagetrennt die Parameter angegeben, die man beim Aufruf an die Funktion übergeben kann. Die festgelegten Parameter sowie die Übergabe beim Aufruf sollten soweit es geht konsistent sein. Beim folgenden Beispiel werden zwei Parameter festgelegt, die innerhalb der Funktion in den Variablen $wert1 und $wert2 gespeichert werden. Da beim Aufruf ebenfalls zwei Werte übergeben wurden ist die Konsistenz gegeben.

<?php

function addieren ($wert1, $wert2)
{
  $ergebnis = $wert1 + $wert2;
  return $ergebnis;
}

// Ausgabe 5
echo addieren (3, 2);

?>

Auslassen von Werten

Wenn man Werte auslässt, behandelt der PHP-Interpreter die nicht übergebenen Parameter als NULL. und versucht trotzdem die Funktion soweit es geht auszuführen. Das kann natürlich dafür sorgen, dass das Ergebnis nicht stimmt. Beim folgenden Beispiel wird nichts ausgegeben, da eine Division durch NULL nicht möglich ist.

<?php

function dividieren ($wert1, $wert2)
{
  $ergebnis = $wert1 / $wert2;
  return $ergebnis;
}

// Gibt nichts aus
echo dividieren (6);

?>

Übergabe zu vieler Werte

Übergibt man beim Funktionsaufruf mehr Werte als die Anzahl der festgelegten Parameter, werden die zuviel übergebenen Werte ignoriert. Beim folgenden Beispiel wurden drei Parameter übergeben, obwohl nur zwei festgelegt wurden.

<?php

function addieren ($wert1, $wert2)
{
  $ergebnis = $wert1 + $wert2;
  return $ergebnis;
}

// Ausgabe 5
echo addieren (3, 2, 4);

?>

Parameter mit Werten vorbelegen

Es kann vorkommen, dass eine Funktion so konzipiert ist, dass nicht immer dieselbe Anzahl an Werten übergeben werden muss. In solchen Fällen kann man den Parametern mit einem Gleichheitszeichen Standardwerte zuweisen. Diese gelten für den Fall, dass keine Werte übergeben werden. Hierbei muss man auf jeden Fall die Reihenfolge beachten. Von links nach rechts gesehen werden zuerst die Parameter festgelegt, die einen Wert benötigen und danach erst die optionalen Parameter mit den Standardwerten. Hält man die Reihenfolge nicht ein, würde das zur fehlerhaften Ausführung der Funktion führen.

<?php

function addieren ($wert1, $wert2 = 5)
{
  $ergebnis = $wert1 + $wert2;
  return $ergebnis;
}

// Ausgabe 8
echo addieren (3);

?>

Standardfunktionen mit func_

Es gibt einige Standardfunktionen in PHP, die speziell beim Aufruf einer selbst definierten Funktion für die Verarbeitung der Übergabewerte verwendet werden können. Diese beginnen mit func_ und ermöglichen die Verarbeitung vieler Parameter, auch wenn bei der Deklaration der Funktion keine festgelegt wurden. Bei der Übergabe werden die Werte mit einem Index durchnummeriert und man kann auf sie mit den folgenden Funktionen zugreifen.

  • func_get_arg(): Ermöglicht den Zugriff auf einen Wert über den Index.
  • func_get_args(): Bildet aus allen übergebenen Werten ein indiziertes Array.
  • func_num_args(): Gibt die Anzahl der übergebenen Werte zurück.

Zugriff auf einen Wert mit func_get_arg()

Diese Funktion ermöglicht den Zugriff auf einen Wert über den Index, der beim ersten Wert 0 ist und mit jedem weiteren Wert um 1 hochgezählt wird. Beim folgenden Beispiel sind keine Parameter festgelegt. Trotzdem werden beim Funktionsaufruf 3 Werte übergeben, die innerhalb der Funktion mit Hilfe von func_get_arg() ermittelt und verarbeitet werden.

<?php

function abc()
{
  $a = func_get_arg(0);
  $b = func_get_arg(1);
  $c = func_get_arg(2);
  return $a . $b . $c;
}

// Ausgabe abc
echo abc (a, b, c);

?>

Zugriff auf alle Werte mit func_get_args()

Mit func_get_args() werden alle übergebenen Werte in einem indizierten Array gespeichert, sodass man darüber auf einzelne oder alle Werte zugreifen kann. Das kann man beispielsweise nutzen, um eine Funktion für Additionsrechnung mit beliebig vielen Zahlen zu erstellen. Beim folgenden Beispiel werden mit der foreach-Schleife nacheinander alle Parameter ausgelesen und zur Variable $wert hinzu addiert. Beim Funktionsaufruf könnte man beliebig viele Zahlen übergeben.

<?php

function addieren() 
{
  $wert = 0;
  foreach (func_get_args() as $n)
  {
    $wert += $n;
  }
  return $wert;
}

// Ausgabe 20
echo addieren (2, 3, 5, 10);

?>

Anzahl der Werte func_num_args() ermitteln

Der auszuführende Code einer Funktion ist häufig abhängig von der Anzahl der übergebenen Werte. Mit func_num_args() kann man die Zahl ermitteln und z.B. in Verbindung mit der if-, else-Abfrage den weiteren Programmverlauf davon abhängig machen.

<?php

function abcd()
{
  if (func_num_args() < 4)
  {
    return 'Keine Operation';
  }
  elseif (func_num_args() == 4)
  {
    $a = func_get_arg(0);
    $b = func_get_arg(1);
    $c = func_get_arg(2);
    $d = func_get_arg(3);
    return $a . $b . $c . $d;    
  }
  else
  {
    return 'Keine Operation';
  }  
}

// Ausgabe abcd
echo abcd (a, b, c, d);

?>