Websiteentwicklung: PHP: Funktionen
Aus Wikibooks
[Bearbeiten] Standardfunktionen
Funktionen sind Anweisungen in PHP, die je nach Definition bestimmte Aufgaben erfüllen. Funktionsaufrufe in PHP haben immer den selben Aufbau. Zu einem bestehen sie aus den Namen der Funktion sowie diversen Parametern, wenn die Funktion welche hat und benötigt. Der Aufbau ist wie folgt definiert:
name_der_funktion(parameter1, parameter2, parameter3, ...);
Am Anfang steht der Name der Funktion, die man aufrufen möchte. In der Funktionsreferenz von PHP (oder in der Funktionsliste) finden sie eine Liste von Funktionen, die sie in PHP benutzen können. Beachten sie, dass manche Funktionen deaktiviert bzw. nicht installiert sind. Nach dem Namen der Funktion kommt eine öffnende Klammer ("("). Nun können Parameter für diese Funktion folgen. Mehrere Parameter müssen durch Kommata getrennt werden. Nach den Parametern (falls welche vorhanden sind) kommt eine schließende Klammer(")"). Wie (fast) alles andere in PHP muss jeder Ausdruck in PHP mit einem Semikolon abgeschlossen werden, so auch ein Funktionsaufruf.
Jeder Teil eines Funktionsaufrufs (Funktionsname, Klammer, Parameter, Kommata, Semikolon) kann mit Leerzeichen oder anderen Whitespaces (Leerzeichen, Zeilenumbrüche, Tabulatoren ...) getrennt werden. Folgende Funktionsaufrufe sind äquivalent und funktionieren gleich:
<?php name_der_funktion(parameter1,parameter2); name_der_funktion(parameter1, parameter2); name_der_funktion ( parameter1, parameter2 ) ; name_der_funktion ( parameter1 , parameter2 ) ; name_der_funktion ( parameter1 , parameter2 ) ; ?>
Da jedoch manche Funktionsaufrufe unleserlich aussehen werden nur bestimmte Funktionsaufrufe verwendet. Üblicherweise benutzt man den PEAR Coding Standard für seine Skripte. In diesem Fall benutzt man die zweite Zeile für Funktionsaufrufe, also nach jedem Kommata in der Parameterliste ein Leerzeichen.
[Bearbeiten] Eigene Funktion
Es gibt in PHP auch die Möglichkeit seine eigene Funktion zu erstellen. Diese muss man zunächst definieren. Das geschieht mit Hilfe von "function"
function name_der_eigenen_funktion(parameter1, parameter2, parameter3, ...){
code, der von der Funktion ausgeführt werden soll}
Danach kann man diese Funktion wie jede Standardfunktion von PHP nutzen
Beispiel:
<?php function meinname($meinname){ echo "Mein Name ist " . $meinname . " und ich bin in der Wikipedia zu Hause! <br />"; } meinname("Der Wikipediander"); meinname("Die Wikipedianderin"); ?>
Das Ergebnis:
Mein Name ist Der Wikipediander und ich bin in der Wikipedia zu Hause! Mein Name ist Die Wikipedianderin und ich bin in der Wikipedia zu Hause!
Vorteil: Man braucht einen Codeschnipsel nur einmal erstellen, und kann ihn so oft man möchte benutzen.
--
Ebenso ist es möglich in einer eigenen Funktion mehrere Parameter zu benutzen. Beispiel:
<?php function meinname($meinname,$alter){ echo "Mein Name ist " . $meinname . ", bin " . $alter . " Jahre alt und ich bin in der Wikipedia zu Hause! <br />"; } meinname("Der Wikipediander","20"); meinname("Die Wikipedianderin","20"); ?>
Ergebnis:
Mein Name ist Der Wikipediander, bin 20 Jahre alt und ich bin in der Wikipedia zu Hause! Mein Name ist Die Wikipedianderin, bin 20 Jahre alt und ich bin in der Wikipedia zu Hause!
---
Eine weiter Möglichkeit besteht darin, die Variablenanzahl einer Funktion offen zu lassen und in der Funktion selbst die Variablenanzahl abzufragen. Dies ist kein sehr sauberer Programmierstil, aber dennoch möglich und wird öfters verwendet.
Beispiel:
<?php function bloodygary_foo(){ $i = func_num_args(); // Die Anzahl der Variablen bekommen if($i<2) return "Es wurden zu wenige Parameter übergeben"; if(func_get_arg(2)=="blubb") // Zugriff auf die einzelnen übergebenen Parameter (0 .. ?) return "Es wurde als 3. Parameter blubb übergeben"; return "was auch immer"; } ?>
Anwendung des Beispiels
echo bloodygary_foo(); >> "Es wurden zu wenige Parameter übergeben" echo bloodygary_foo("bli","bla","blubb"); >> "Es wurde als 3. Parameter blubb übergeben"; echo bloodygary_foo("irgend","was","völlig","anderes",1,23,1,31); >> "was auch immer";
Sicherlich ist das nicht das beste Beispiel, aber zeigt dennoch etwas, das an dieser Stelle erwähnt werden sollte.
[Bearbeiten] Static und Global
Statisch:
function test_static() { static $a =0; //Definierung der Variable $a als statisch return $a++; //$a um eins erhöhen und zurückgeben } for($i=0;$i<10;$i++) echo test_static()."<br>"; echo $a; //Die Variable kann von außerhalb nicht ausgelesen werden!
Im obrigen Beispiel ist die Variable $a statisch, d.h. sie existiert nur in der Funktion (kann von außerhalb nicht ausgelesen werden) Sie wird dauerhaft gespeichert, und die Funktion hat jederzeit Zugriff darauf...
Eine Einfache, aber durchaus sinnvolle Anwendung wäre eine Funktion, die bei jedem Aufruf eine andere Zahl zurückgibt, um Verdoppelungen zu vermeiden.
Global:
$a=0; //Definierung der Variable $a function test_static() { global $a; //Die globale Variable $a wird der Funktion zugänglich gemacht return $a++; //$a um eins erhöhen und zurückgeben } for($i=0;$i<10;$i++) echo test_static()."<br>"; echo $a; //Die Variable kann von außerhalb ausgelesen und verändert werden!
Globale Variablen existieren im gesamten Skript und können von überall aufgerufen werden. Sie müssen in Funktionen jedoch erst durch "global $variablenname" gesetzt werden.
Hinweis: wenn man nur innerhalb der Funktion eine Variable verändern will, sollte man das Array $GLOBALS verwenden ( $GLOBALS["variable_name"] )

