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(25, 1.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