PHP Tutorial 7 – Funktionen 2

Im letzten Kapitel sind wir beim sehr anspruchsvollen Thema Funktionen stehen geblieben. In diesem Kapitel werden wir das Thema Funktionen abschließen und werden danach wieder einige leichte Themen behandeln - ich weiß, Funktionen sind nicht das einfachste Thema in PHP, es ist zu Beginn sehr schwer zu verstehen, vor allem wenn es schriftlich gelehrt wird. Allerdings sind Funktionen ein grundlegender Bestandteil jeder Programmiersprache, daher muss dieses Thema abgeschlossen sein, danach kommen noch die relativen einfachen Rechenoperationen - damit werden wir bereits die grundlegenden Sachen der Programmiersprache abgeschlossen sein, und werden uns in den weiteren Tutorials themenspezifisch orientieren.

Glütigkeit von Variablen
Variablen innerhalb einer Funktionen heißen lokal, Variablen außerhalb einer Funktionen heißen global. Nun, wo ist der Unterschied? Lokale Variablen sind nur innerhalb einer Funktion verfügbar, globale Variablen sind nur außerhalb einer Funktion verfügbar.

<?php
$var = 'Global';
function output() {
    $var = 'Lokal';
    echo $var;
}
output();
?> 

Wie man hieran erkennen kann, wird zwei mal die Variable $var deklariert, einmal im globalen Raum und einmal im lokalen Raum einer Funktion. Beim Ausgeben der Variablen gibt das PHP Script automatisch die lokale Variable aus.

Das Schlüsselwort global
Wenn man eine globale Variable in einer Funktion nutzen will, muss man dies dem PHP-Interpreter explizit mitteilen, so dass dieser weiß, dass er die globale anstelle der lokalen Variable verwenden muss:

<?php
$var = 'Global';
function output() {
    global $var;
    echo $var;
}
output();
?> 

Rückgabewert
Mit Parametern kann man Werte an eine Funktion übergeben, mit dem Schlüsselwert global kann man globale Variablen bearbeiten, doch wirklich Sinn geben die meisten Funktionen nur, wenn sie etwas zurückgeben. Man kann sich das ganze wie ein Taschenrechner vorstellen. Man gibt dem Taschenrechner eine Zahl, drück z.B. auf den Button zum Wurzelziehen und erhält dann das Ergebnis zurück.
Um dann mit dem Rückgabewert etwas anzufangen, muss man diesen entweder in einer Variable speichern, oder direkt ausgeben - ein Taschenrechner z.B. macht beides, er gibt den Wert direkt aus, trotzdem kann mit mit ihm meistens direkt weiterrechnen - da der Taschenrechner ihn zuvor gespeichert hat.

<?php
function output() {
    $var = 'Hallo';
    return $var;
}
// Variante 1 - direkt ausgeben:
echo output();
// Variante 2 - speichern (und ausgeben):
$text = output();
echo $text;
?> 

Das Schlüsselwort zum Zurückgeben von Werten ist demnach return. Dabei sollte beachtet werden, dass nur ein Wert zurückgegeben werden kann [wenn mehr zurückgegeben werden sollen, muss ein Array zurückgegeben werden, das behandeln wir allerdings erst in späteren Kapiteln. Auch kann einen Rückgabewert als Referenz übergeben, das ist aber im Grunde genommen nie nötig, von daher spare ich mir diese Erklärung, zumindest an dieser Stelle].

Rekursive Funktionen
Rekursive Funktionen sind Funktionen, die sich selbst aurufen, d.h. sie können wie eine Schleife arbeiten. Allerdings benötigen sie bei jedem Durchlauf eine Änderung, da sonst eine Endlosschleife entstehen würde [wenn eine Funktion einfach nur sich selbst aufruft, ohne etwas anderes zu machen, gibt es dabei kein Ende].

<?php
function output($i = 0) {
    if ($i < 10) {
        echo $i;
        output($i+1);
    }
}
output();
?> 

Die Zeile mit if werden die meisten noch nicht kennen, da Schleifen erst demnächst kommen werden. Was soll diese Funktion also? Diese Funktion wird aufgerufen und setzt $i = 0 [kein Parameter gegeben]. Dann überprüft diese, ob $i kleiner 10 ist, wenn ja gibt sie $i aus und ruft danach output aus, allerdings mit dem Parameter $i + 1, d.h. irgendwann wird $i größer bzw. gleich 10 sein, und damit wird der Schleifendurchlauf aufhören, da die Bedingung nicht mehr erfüllt ist. Dies ist ein sehr einfaches Beispiel für eine rekursive Funktion, sollte aber den Grundgedanken erklärt haben.

Statische Variablen
Eine lokale Variable, d.h. eine Variable, die nur innerhalb einer Funktion existiert, wird bei Ende der Funktion automatisch gelöscht, d.h. bei jedem Aufruf der Funktion neu gesetzt. Deswegen musste auch im letzten Beispiel das $i immer wieder als Parameter übergeben werden. Meistens ist diese Eigenart gewünscht, es gibt jedoch auch Ausnahmen. Dafür gibt es statische Variablen. Dafür muss eine Variable nur mit dem Schlüsselwort static bezeichnet werden, und schon bleibt die Variable bei jedem Funktionsaufruf erhalten:

function output() {

    [...]
    static $i = 24;
    [...]

} 

Bei dieser Funktion wird der Wert von $i erhalten bleiben, auch wenn die Funktion beendet und später wieder aufgerufen wird.

Nun haben wir alles wichtige zum Thema Funktionen gelernt, wir können nun in den nächsten Kapiteln mit Schleifen und danach mit Rechenoperatoren anfangen. ;) Ich hoffe, dieses Kapitel war ein ganzes Stück einfacher als das letzte. Mit der Anwendung von Parametern und Rückggabewerten verfügt ihr außerdem nun über das wichtigste Hilfsmittel PHPs, die riesige Funktionsbibliothek, die von PHP mitgeliefert wird. ;)

[Copyright 2009-2010 by Robin Rump, robinrump.com. All rights reserved. Do not copy, edit or publish without asking author.]

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>