====== Funktionen ====== * Eine Funktion ist ein Block von Anweisungen, die in einem Programm wiederholt verwendet werden können. * Eine Funktion wird nicht sofort ausgeführt, wenn eine Seite geladen wird. * Eine Funktion wird durch einen Aufruf der Funktion ausgeführt. ===== Syntax ===== function ( <ÜBERGABEWERTE> ) { ; return ( ); } Eine Funktion muss keine Übergabewerte haben, sie muss auch nicht zwingend einen Wert zurückgeben. ===== Beispiel ===== Funktion ohne Übergabe- und Rückgabewert ; } sagHallo(); echo "Huhu
"; sagHallo(); ?>
{{ :kurs:kursstufe:php:funktionen:funktionsablauf.png |}} ===== Aufgabe: ===== Probiere das Beispiel in deinem Webspace aus. ===== Funktionen mit Übergabewert ===== Beim Funktions-Aufruf können Inhalte übergeben werden, im Beispiel ''teilen(18,2)''. ''18'' und ''2'' heißen dabei Argumente oder Übergabwerte. Die Funktion nimmt die Argumente dabei in der angebenen Reihenfolge entgegen und weist diese den Variablen ''$zaehler'' und ''$nenner'' zu. Berechnung von 18 / 2 = "; teilen(18,2); ?> Alle Variablen, die innerhalb der Funktion deklariert oder initialisiert werden, gelten nur **lokal** innerhalb des Funktionsblocks. Probiere den folgenden Code aus: Berechnung von 18 / 2 = "; teilen(18,2); echo $bruch; ?> Da ''$bruch'' außerhalb der Funktion nicht existiert, erfolgt hier eine Fehlermeldung. Um dieses Problem zu lösen, kann man Rückgabewerte übergeben. Dabei kehrt der Programmablauf an die Stelle zurück, an der die Funktion aufgerufen wurde und übergibt den mit ''return'' angegebenen Wert. Um diesen Rückgabewert weiterzuverarbeiten, muss man ihn im Hauptprogramm in einer Variablen ablegen. Berechnung von 18 / 2 = "; $ergebnis=teilen(18,2); // speichert den Rückgabewert der Funktion in der Variablen $ergebnis echo $ergebnis; ?> Aufpassen muss man, wenn man im globalen Programmbereich und innerhalb von Funktionen Variablen mit dem selben Namen verwendet: "; return $bruch; } $bruch=500; echo "Global vorher: $bruch
"; echo "

Berechnung von 18 / 2 = "; $ergebnis=teilen(18,2); echo $ergebnis; echo "
Global nachher: $bruch
"; $bruch=teilen(20,2); // hier wird die globale $bruch Variable mit //dem Rückgabewert überschrieben. echo "
Global am Ende: $bruch
"; ?>
===== Aufgabe: ===== * Teste alle Beispiele in deinem Webspace * Finde heraus, wie man innerhalb einer Funktion auf globale Variablen zugreifen kann. * Erweitere das Divisionsbeispiel durch ein Formular, in dem du die beiden Werte eingeben kannst. Welchen Sonderfall solltest du überprüfen? * Erweitere dein Formular um ein weiteres Feld, in dem du weitere Rechenoperationen auswählen kannst. (Fakultät, Logarithmus?. Was ist die größte Zahl, deren Fakultät du berechnen kannst?) * Wenn du Startschwierigkeiten hast, kannst du mit der {{:kurs:kursstufe:php:funktionen:rechner.zip|Vorlage für den Rechner}} beginnen.