Verständnisfrage innerhalb Funktionen includen
Oliver
- php
Hi,
vorab, das funktioniert alles, auch keine Fehlermeldung, aber heisst ja nichts.
Wenn ich innerhalb einer Funktion eine Datei mit Variabeln include, sind diese auch nur in dieser Funktion verfügbar.
zb.
<?php
$x = '1223455';
?>
Innerhalb der Funktion kann ich somit $x aufrufen, ausserhalb natürlich nicht.
Wenn das aber nun keine einfache Variabel(in der externen Datei) ist die ich include, sondern eine
Funktion, dann ist diese auch ausserhalb aufrufbar. Das bedeutet zwar, dass Funktionen immer global sind, aber einige Fragen bleiben doch.
Darf eine Funktion innerhalb einer anderen Funktion auftauchen, wahrscheinlich schon, daher frage ich mal anders, gibt es Gründe das nicht zu tun?
Wie muss ich mir das bildlich vorstellen, wenn ich nicht includen würde?
zb.
func_1()
{
func_2($para1,$para2)
{}
}
Oder ist die visuelle Vorstellung ganz anders als PHP intern das beim includen sieht?
vg.
Oliver
echo $begrüßung;
Wenn das aber nun keine einfache Variabel(in der externen Datei) ist die ich include, sondern eine
Funktion, dann ist diese auch ausserhalb aufrufbar. Das bedeutet zwar, dass Funktionen immer global sind, aber einige Fragen bleiben doch.
Richtig, es gibt keine lokalen Funktionen.
Darf eine Funktion innerhalb einer anderen Funktion auftauchen, wahrscheinlich schon, daher frage ich mal anders, gibt es Gründe das nicht zu tun?
Dürfen schon. Allerdings wird PHP bei mehrfachem Aufruf der äußeren Funktion jedes Mal die innere Funktion anzulegen versuchen, was beim zweiten Mal mit einem fatalen Fehler geahndet wird. Es sei denn, man verhindert mit bedingter Ausführung, dass die innere Funktion erneut angelegt wird.
Inwieweit das Schachteln der Funktionen sinnvoll ist, kommt auf den konkreten Anwendungsfall an. Ob sich nicht eine bessere Lösung für diesen Fall findet, wäre allerdings auch eine Prüfung wert.
Wie muss ich mir das bildlich vorstellen, wenn ich nicht includen würde?
func_1()
{
func_2($para1,$para2)
{}
}
Abgesehen vom fehlenden Schlüsselwort function, genau so.
Oder ist die visuelle Vorstellung ganz anders als PHP intern das beim includen sieht?
Ein include oder require wirkt so, als ob der zu inkludierende Code an der Stelle des include/require stünde.
echo "$verabschiedung $name";
Hi,
»» Wenn das aber nun keine einfache Variabel(in der externen Datei) ist die ich include, sondern eine
»» Funktion, dann ist diese auch ausserhalb aufrufbar. Das bedeutet zwar, dass Funktionen immer global sind, aber einige Fragen bleiben doch.
Richtig, es gibt keine lokalen Funktionen.
Jain, habe noch ein wenig experimentiert. Die innere Funktion könnte man schon als lokal bezeichnen, denn sie ist erst global abrufbar wenn die Mutterfunktion aufgerufen wurde.
Hauptsache ich weiss nun, dass ich PHP dadurch nicht misshandle.
Danke
Oliver
echo $begrüßung;
» Richtig, es gibt keine lokalen Funktionen.
Jain, habe noch ein wenig experimentiert. Die innere Funktion könnte man schon als lokal bezeichnen, denn sie ist erst global abrufbar wenn die Mutterfunktion aufgerufen wurde.
Deswegen wird es aber keine lokale Funktion. Es ist allgemein üblich, unter einer lokalen Funktion eine zu verstehen, die nur innerhalb eines Bereiches gültig ist. Und das ist ja unter PHP, so wie wir es heute kennen, nicht der Fall.
Egal, wo eine Funktionsdeklaration positioniert ist, es hat keinen Einfluss auf die Arbeitsweise und die Verwendungsmöglichkeiten. Eine Funktion nach dieser Position zu bezeichnen, führt allenfalls zu irrtümlichen Assoziationen.
echo "$verabschiedung $name";