Was ist der Umfang der require_once in PHP?
Einfache Frage: Ist der Umfang der require_once
global?
Beispiel:
<?PHP
require_once('baz.php');
//do some stuff
foo ($bar);
function foo($bar) {
require_once('baz.php');
//do different stuff
}
?>
Wenn foo aufgerufen wird, tut es re-parse baz.php? Oder ist es verlassen sich auf die bereits erforderliche Datei von der Haupt-php-Datei (analagous Aufruf von require_once zweimal hintereinander für die gleiche include-Datei)?
Ich habe diesen thread vor, aber es hat nicht so Recht eine Antwort auf die Frage:
Sollte require_once "einige file.php" ; erscheinen überall, aber der Anfang der Datei?
Vielen Dank für Ihre Hilfe!
Du musst angemeldet sein, um einen Kommentar abzugeben.
require_once()
im Grunde stützt sich auf die physische Datei, um zu bestimmen, ob oder nicht es ist schon im Lieferumfang enthalten. Es ist also nicht so sehr den Zusammenhang, den Sie hier aufrufenrequire_once()
es, ob oder nicht, die physische Datei ist zuvor erforderlich.In deinem code oben, Ihre
foo()
Funktion würde nicht re-parsebaz.php
, denn es ist die gleiche Datei wie zuvor an der Spitze.Jedoch, werden Sie unterschiedliche Ergebnisse erhalten, basierend auf, ob Sie es innerhalb
foo()
oder enthalten es nach oben, wie die Bereiche gelten, wennrequire_once()
gelingt.Tut es nicht.
require_once
's verfolgen gilt, um innerhalb von Funktionen.Allerdings werden die folgenden Skripte einen Fehler erzeugen:
a.php
b.php
weil die Funktion f() ist vorab nicht festgelegt, um
b.php
.Genauer deine Frage zu beantworten, das zweite mal, rufen Sie
require_once
auf die Datei, es wird nicht alles tun, weil es bereits enthalten sein.Wenn Ihr include-Funktionen etc.. in es, dann müsste man Fragen wie es innerhalb einer Funktion sowieso, also Umfang, ist irrelevant. Wenn es nur Variablen definiert oder bearbeitet, dann können Sie einfach
require
stattrequire_once
wenn Sie wollen, dass es wieder aufgenommen, damit eine Neudefinition der Variablen in Ihrem Gültigkeitsbereich.