V. 8.6.1 (27.01.2012)

Infos

Download

Theorie PHP

Schnellsuche

PHP - Grundlagen - Funktionen - Besonderheiten

1. Variable Funktionsnamen

Analog zu den variablen Variabeln bietet uns PHP auch die Möglichkeit, das mit Funktionen zu machen. Dabei legt man in einer Variablen den Funktionsnamen fest und ruft dann diese dann einfach mit einem () auf.


<?php
  
function bla ()
  {
    echo 
'Jodelblah';
  }
  function 
blubb()
  {
    echo 
'blubber';
  }
  if (
true === $irgendwas)
  {
    
$func 'bla';
  }
  else
  {
    
$func 'blubb';
  }
  
$func();
?>

2. Dynamische Funktionen

Was das nun soll, weiß ich selber nicht genau, aber ich zeige es euch trotzdem. Wenn man eine Funktion definieren will, während der PHP-Interpreter zur Laufzeit ein Script abarbeitet, so kann man das so machen


<?php
  $rechne_um 
create_function (
                                
'$dollar, $euro_wert'
                                
'return $dollar * $euro_wert;'
                               
);
  
$kohle $rechne_um(251.5);
  echo 
$kohle;
?>

Erläuterung

Als erstes erstellt man mit $rechne_um einen Verweis auf die entsprechende Funktion (create_function). Dabei müssen zwei "Parameter" angegeben werden. Der erste beinhaltet die tatsächlichen Parameter, die diese "Laufzeitfunktion" benötigt und der zweite stellt den eigentlichen Code, also die benötigten Anweisungen derselbigen dar.

3. Verschachtelte Funktionen

Nicht nur in JavaSript, sondern auch in PHP kann man Funktionen in Funktionen einsetzen! Wofür man das gebrauchen kann? Keine Ahnung, ich zeig es euch trotzdem mal. Ist wahrscheinlich so eine Art von Pseudo-OOP.

Ein Beispiel


<?php
  
function bla ()
  {
    function 
blubb()
    {
      echo 
'blubb wurde aufgerufen<br>';
    }
    function 
blubber()
    {
      echo 
'blubber wurde aufgerufen<br>';
    }
    
blubb();
    
blubber();
  }
  
bla();
?>

Erläuterung

Die Funktion bla enthält zwei zusätzliche Funktionen namens blubb und blubber. Diese werde nun in selbiger aufgerufen (blubb(); blubber();). So reicht denn nun der einmalige Aufruf der Hauptfunktion bla, um beide Ausgaben zu erzeugen. Der Aufruf der beiden Unterfunktionen muss natürlich nach deren Definition erfolgen, sonst gibt es eine entsprechende Fehlermeldung à la Call to undefined function blubb().

Wichtig

Man hat bei obigem Beispiel keinen direkten Zugriff auf die, nennen wir sie mal so, Kindfunktionen. Folgendes Beispiel würde also auf jeden Fall eine Fehlermeldung erzeugen:


<?php
  
function bla ()
  {
    function 
blubb() { ... }
    function 
blubber() { ... }
  }
  
blubb();
?>

Aber

... man kann das trotzdem über einen Umweg erreichen, indem man zuerst die "Elternfunktion" aufruft und dann die gewünschte Kindfunktion (daher mein obiger Begriff Pseudo-OOP).


<?php
  
function bla ()
  {
    function 
blubb() { ... }
    function 
blubber() { ... }
  }
  
bla();
  
blubb();
?>

weiter zum nächsten Abschnitt