Funktionen in PHP

Funktionen sind flapsig gesagt, kleine Programme im großen Ablauf.

Wenn wie bisher alle Abläufe nacheinander kommen, wird es bei schon mittelgroßen Programmen bereits herzhaft unübersichtlich und es werden unter Umständen immer wieder benötigte Programmteile doppelt und dreifach erstellt. Dies kann über Funktionen umgangen werden.

Als Beispiel kommt hier eine kleine Berechnung, die in eine Funktion aufgegliedert wird.

Aufbau einer Funktion

Die Struktur ist immer dieselbe

Alles GROß Geschriebene sind beliebige Namen und Werte:

Grundsätzlicher Aufbau von Funktionen
function NAME-DER-FUNKTION ( ÜBERGABEWERTE )
{
   AUSZUFÜHRENDER CODE;
   return ( ZURÜCKGEBENER WERT );
}

Aufgerufen wird eine Funktion dann mit:

Grundsätzlicher Aufruf einer Funktion
$ZURUECKGEGEBENER_WERT =  NAME-DER-FUNKTION ( ÜBERGABEWERTE );

Vorerst eine ganz einfache Funktion ohne Übergabewerte und ohne Rückwerte.

PHP-Quellcode: eigenen Funktion in PHP programmieren
<?php
function ausgabe_uhrzeit()
{
    echo "<p>Es ist gerade: ". date("H:i:s"). "</p>";
}
 
ausgabe_uhrzeit();
?>

Und dann das Ergebnis des Programmes:

Es ist gerade: 10:34:55

Funktionen können beliebig oft aufgerufen werden - im Beispiel sehen Sie, wie schnell auch die Ausführung von PHP-Programmen ist. Die Ausgabe der Uhrzeit erfolgt am Beginn und am Ende (OK, viel mehr macht das Programm nicht:)

PHP-Quellcode: Funktionen beliebig oft aufrufbar
<?php
function ausgabe_uhrzeit()
{
    echo date("H:i:s");
}

echo "<p>Programmm wurde gestartet um: ";
ausgabe_uhrzeit();

echo "<p>Programmm wurde beendet um: ";
ausgabe_uhrzeit();
?>

Programmm wurde gestartet um: 10:52:22

Programmm wurde beendet um: 10:52:22

Funktionen mit Übergabewert

Beim Funktions-Aufruf können Inhalte übergeben werden, im Beispiel dividieren( 18, 2 );

Die Funktion selber nimmt in der übergebenen Reihenfolge die Zahlen entgegen und weist diese den Variablen $zahl und $quotient zu.

PHP-Quellcode: Übergabewerte bei Funktionen
<?php
function dividieren( $zahl, $quotient )
{
    echo bcdiv ($zahl, $quotient);
}
 
echo "<p>Berechnung von 18 / 2 = ";
dividieren( 18, 2 );
?>

Als berechnete Ergebnis sollte nun angezeigt werden - im Beispiel hier:

Berechnung von 18 / 2 = 9

Nun werden wir das Programm erweitern, dass es variabler wird - hier nun schon vorneweg Variablen. Für die erste Zahl $dividend (die Zahl, die geteilt wird) und $divisor (die Zahl, durch die geteilt wird)

PHP-Quellcode: Funktionen mit Variablen nutzen
<?php
$dividend = 33;
$divisor  = 5;
 
function dividieren( $zahl, $quotient )
{
    echo bcdiv($zahl, $quotient);
}
 
echo "<p>Berechnung von $dividend / $divisor = ";
dividieren( $dividend, $divisor );
?>

Das Ergebnis ist für Leute, die es nicht so genau nehmen – für alle andere bitte in www.php.net nachschlagen, wie die Genauigkeit eingestellt werden kann.

Berechnung von 33 / 5 = 6

Gültigkeit von Variablen

Das besondere an Funktionen ist die Gültigkeit von Variablen. Im Beispiel werden alle Variablen vor der Funktion, innerhalb der Funktion und nach der Funktion aufgerufen.

PHP-Quellcode: Gültigkeit von Variablen bei Funktionen
<?php
$dividend = 33;
$divisor  = 5;
 
// aus didaktischen Gründen
echo "<p>Werte außerhalb und VOR der Funktion";
echo '<br> $dividend :' . $dividend;
echo '<br> $divisor  :' . $divisor;
echo '<br> $zahl     :' . $zahl;
echo '<br> $quotient :' . $quotient;
echo '<br>';
 
function dividieren( $zahl, $quotient )
{
    echo bcdiv($zahl, $quotient, 2);
 
    // aus didaktischen Gründen
    echo "<p>Werte INNERHALB der Funktion";
    echo '<br> $dividend :' . $dividend;
    echo '<br> $divisor  :' . $divisor;
    echo '<br> $zahl     :' . $zahl;
    echo '<br> $quotient :' . $quotient;
    echo '<br>';
}
 
echo "<p>Berechnung von $dividend / $divisor = ";
dividieren( $dividend, $divisor );
 
// aus didaktischen Gründen
echo "<p>Werte außerhalb und NACH der Funktion";
echo '<br> $dividend :' . $dividend;
echo '<br> $divisor  :' . $divisor;
echo '<br> $zahl     :' . $zahl;
echo '<br> $quotient :' . $quotient;
echo '<br>';
?>

In der Ausgabe das Browsers sehen wir nun, dass die Variablen andere Werte innerhalb der Funktion haben, wie diese vor und nach der Funktion.

Gültigkeitsbereiche von Variablen im Browser

Werte außerhalb und VOR der Funktion
$dividend :33
$divisor :5
$zahl :
$quotient :

Berechnung von 33 / 5 = 6.60

Werte INNERHALB der Funktion
$dividend :
$divisor :
$zahl :33
$quotient :5

Werte außerhalb und NACH der Funktion
$dividend :33
$divisor :5
$zahl :
$quotient :

Das bedeutet, dass Variablen, die außerhalb der Funktion Inhalte habe, diese nicht mehr in der Funktion verfügbar haben. Selbst wenn Sie dieselben Variablennamen verwenden. Aus diesem Grund müssen Ergebnisse, die dann z.B. nach Berechnung innerhalb einer Funktion, wieder zurückgegeben werden - dieses geschieht über return ( $wert );

PHP-Quellcode: Rückgabewerte aus Funktionen
<?php
$dividend = 33;
$divisor  = 5;
 
function dividieren( $zahl, $quotient )
{
    $ergebnis = bcdiv($zahl, $quotient, 2);
    return ( $ergebnis );
}
 
$wert = dividieren( $dividend, $divisor );
echo "Berechnung von $dividend / $divisor = $wert ";
?>

Da die Gültigkeit der Variablen $ergebnis nur innerhalb der Funktion gilt, wird der Wert über den Funktionsaufruf der Variable $ergebnis (kann auch beliebig anders genannt werden) zugewiesen $wert = dividieren( $dividend, $divisor );

Ergebnis der Funktion mit RETURN zurückgegebenen Inhalt

Berechnung von 33 / 5 = 6.60

Vorgabewerte für Funktionen bestimmen

Funktionen mit Vorgabewerten zu belegen, kann so geschehen:

PHP-Quellcode: Funktionen mit Vorgabewerte
<?php
function dividieren( $zahl=1, $quotient=1 )
{
    // ...
?>

Wird keine Zahl beim Funktionsaufruf übergeben, wird einfach der Vorgabewert genutzt, im obigen Beispiel dann "1".

Aufgabe: Sicherheitskontrolle in Funktion auf 0

Da durch 0 nicht geteilt werden darf, soll innerhalb der Funktion eine Sicherheitsabfrage stattfinden und gegebenenfalls ein Hinweis kommen.

Aufgabe: Sicherheitskontrolle in Funktion wegen Teilen durch

Teilen durch 0 nicht möglich

Berechnung von 33 / 0 =

Lösung zur Aufgabe