[Tutorial] Einführung in FunktionenSie befinden sich: Home > Webmaster News
[Tutorial] Einführung in Funktionen
Codeteile, die Sie in Ihrem Script mehrfach benötigen, schreiben Sie zweckmäßigerweise in eine eigene Funktion. Die Syntax hierfür ist:
<?php
function Name_Der_Funktion(parameter1,parameter2,...) {
// PHP-Code
return $rueckgabewert
}
?>
Nutzen Sie als Funktionsname etwas mit wiedererkennungswert, z.B. berechnePrimzahl() oder datumUmformen().
Sie können einer Funktion beliebig viele Werte übergeben. Die Funktion liefert aber nur eine einzige Variable zurück:
<?php
function plz_ort($postleitzahl,$stadtname) {
$adresszeile = $postleitzahl . ' ' . $stadtname;
return $adresszeile;
}
?>
Diese Funktion setzt Postleitzahl, ein Leerzeichen und den Stadtnamen zu einer Adresszeile zusammen. Angesprochen wird die Funktion durch Aufruf ihres Namens und der zu nutzenden Parameter:
<?php
$plz = '12345';
$ort = 'Testhausen';
$zeile = plz_ort($plz,$ort);
echo $zeile;
?>
Hier wird ausgegeben: 12345 Testhausen
Bitte beachten Sie, dass die Benennung der Variablen beim Aufruf der Funktion nicht der Benennung der Variablen in der Funktion selbst entsprechen muss. Wir rufen die Funktion auf mit plz_ort($plz,$ort); - in der Funktion werden die übergebenen Parameter dann in der Reihenfolge ihres Auftretens den Variablen der Funktionsdefinition zugeordnet. $plz wird also nach $postleitzahl gespeichert und $ort wird nach $stadtname gespeichert.
Die Funktion berechnet eine Variable $adresszeile, deren Inhalt zurückgegeben wird. Da der Funktionsaufruf mit $zeile =plz_ort($plz,$ort); erfolgte, steht der Funktionsrückgabewert dann auch in $zeile.
Wird in einer Funktion nichts kompliziertes berechnet, dann kann man die Verarbeitungsvorschrift auch hinter das Return schreiben:
<?php
function plz_ort($postleitzahl,$stadtname) {
return $postleitzahl . ' ' . $stadtname;
}
?>
Diese Funktion liefert den gleichen Wert zurück.
Alle in einer Funktion benutzten Variablen existieren zunächst nur innerhalb dieser Funktion. Sie können also in der Funktion nicht auf den Wert einer Variablen außerhalb nutzen. Das folgende Script:
<?php
function plz_ort($postleitzahl,$stadtname) { // Fehlerhafte Funktion
$adresszeile = $plz . ' ' . $ort;
return $adresszeile;
}
$plz = '12345';
$ort = 'Testhausen';
$zeile = plz_ort($plz,$ort);
echo $zeile;
?>
funktioniert deshalb nicht, weil innerhalb der Funktion nicht mit den der Funktion bekannten Übergabewerten, sondern mit den der Funktion unbekannten Variablen $plz und $ort gearbeitet wird.
Diese Eigenschaft einer Funktion ist sehr wichtig, denn auch umgekehrt kennt das Script nicht die Variablen innerhalb einer Funktion. Das folgende Script soll das veranschaulichen:
<?php
function rechnen($zahl1,$zahl2) {
$ergebnis = $zahl1 * 15 + $zahl2 /3 ;
$zahl1 = 12345;
$zahl2 = 67890;
echo 'Zahl1 in der Funktion: ' . $zahl1 . '<br>';
echo 'Zahl2 in der Funktion: ' . $zahl2 . '<br>';
return $ergebnis;
}
$zahl1 = 12;
$zahl2 = 18;
$berechnung = rechnen($zahl1,$zahl2);
echo $berechnung . '<br>';
echo 'Zahl1 nach der Funktion: ' . $zahl1 . '<br>';
echo 'Zahl2 nach der Funktion: ' . $zahl2 . '<br>';
?>
Wir sehen, dass wir in der Funktion zwar die Werte der beiden Variablen verändert haben, dass die Variablen außerhalb der Funktion aber trotz gleichen Namens nicht berührt wurden.
Diese Eigenschaft ist sehr wichtig. Wir können nämlich funktionierende Funktionen einfach ohne jede Änderung in ein anderes Script einbauen ohne uns darüber Gedanken machen zu müssen, ob wir existierenden Code stören.
Anfangs hatten wir festgestellt, dass eine Funktion immer nur eine einzige Variable zurückgeben kann. Wenn Ihre Aufgabenstellung aber die Rückgabe mehrerer Werte verlangt, so können Sie diese in ein Array speichern und das Array als Rückgabewert einsetzen:
<?php
function stringEnden($string) { // Gibt das erste und das letzte Byte einer Zeichenkette zurück
if(strlen($string) == 0) return false;
$ret = array();
$ret[0] = substr($string,0,1);
$ret[1] = substr($string,-1);
return $ret;
}
?>
Funktionen können natürlich auch sehr komplexen Code enthalten. So ist es denkbar, dass Sie einer Funktion die WHERE-Klausel eines SQL-Statements übergeben, die Funktion dann mit diesem WHERE in einer MySQL-Tabelle liest und die gefundenen Daten zurückgibt.
<?php
function kundenLesen($where) {
$sql = "SELECT knr,name FROM kunden WHERE $where";
$erg = mysql_query($sql);
if(mysql_num_rows($erg) == 0) return false; // Nichts gefunden
$row = mysql_fetch_assoc($erg);
return $row;
}
$kundenarray = kundenLesen("name = 'meier' AND ort = 'koeln'")
?>
Funktionen setzen Sie immer dort ein, wo Sie gleichartigen Code an unterschiedlichen Stellen in Ihrem Programm haben, oder wenn Sie wissen, dass Sie Codeteile auch in anderen, neuen Projekten 1:1 weiterverwenden können. (Autor: Wolfgang), Eingetragen am 22.07.2008
Schreib ein Kommentar
|