Websiteentwicklung: PHP: Funktionen

Aus Wikibooks

Standardfunktionen[Bearbeiten]

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 Formatvarianten verwendet. Üblicherweise benutzt man den PEAR Coding Standard für seine Skripte. In diesem Fall benutzt man die zweite Variante für Funktionsaufrufe, also nach jedem Komma in der Parameterliste ein Leerzeichen.

Eigene Funktionen[Bearbeiten]

Es gibt in PHP auch die Möglichkeit, eine eigene Funktionen zu erstellen. Diese muss man zunächst definieren. Das geschieht mit Hilfe des Schlüsselwortes 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.

Mehrere Parameter[Bearbeiten]

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 unbekannte Zahl an Parametern[Bearbeiten]

Eine weitere 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.

statische Variablen[Bearbeiten]

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.

globale Variablen[Bearbeiten]

$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" bekannt gemacht werden.

Hinweis: wenn man nur innerhalb der Funktion eine Variable verändern will, sollte man das Array $GLOBALS verwenden ( $GLOBALS["variable_name"] )

Closures[Bearbeiten]

Closures sind anonyme Funktionen. Das heißt sie haben keinen Funktionsnamen.

$rechne = function($a, $b) {
    return $a + $b;
};
$rechne(3, 7); // => 10

Closures werden durch eine Variable angesprochen. Man benutzt sie hauptsächlich für "Callback"-Funktionen.