Hauptmenü

Untermenü

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 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 JavaScript sondern auch in PHP kann man Funktionen in Funktionen einsetzen! Wofür man das gebrauchen kann? Keine Ahnung, ich zeig es euch trotzdem mal.

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 werden 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();
?>

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt