Ich versuche, eine Variable von einer Include-Datei an eine andere zu übergeben. Dies funktioniert NICHT, es sei denn, ich deklariere die Variable in der zweiten Include-Datei als global. Ich muss es jedoch NICHT als global in der Datei deklarieren, die das erste Include aufruft. Zum Beispiel:
front.inc:
$name = 'james';
index.php:
include('front.inc');
echo $name;
include('end.inc');
Ausgabe: James
end.inc:
echo $name;
Ausgabe: nichts
WENN ich den globalen $ name deklariere, bevor ich $ name in end.inc wiedergebe, funktioniert es ordnungsgemäß. Die akzeptierte Antwort auf diesen Beitrag erklärt, dass dies von Ihrer Serverkonfiguration abhängt: Übergeben von Variablen in PHP von einer Datei in eine andere
Ich verwende einen Apache-Server. Wie würde ich es so konfigurieren, dass es nicht erforderlich ist, $ name als global zu deklarieren? Gibt es Vor- und Nachteile gegenüber dem anderen?
Antworten:
Wenn Sie Dateien in PHP aufnehmen, verhält es sich so, als ob der Code in der Datei vorhanden ist, aus der sie aufgenommen werden. Stellen Sie sich vor, Sie kopieren und fügen den Code aus jeder Ihrer enthaltenen Dateien direkt in Ihre ein
index.php
. So funktioniert PHP mit Includes.Also, in Ihrem Beispiel, da Sie eine Variable mit dem Namen festgelegt haben ,
$name
in Ihrerfront.inc
Datei, und beide enthieltenfront.inc
undend.inc
in Ihremindex.php
, sind Sie in der Lage sein ,echo
die Variable$name
überall nach deminclude
vonfront.inc
innerhalb Ihrerindex.php
. Auch hier verarbeitet PHP Ihre Daten so,index.php
als ob der Code aus den beiden von Ihnen enthaltenen Dateien Teil der Datei wäre.Wenn Sie
echo
eine Variable in eine eingeschlossene Datei einfügen, die nicht in sich selbst definiert ist, erhalten Sie kein Ergebnis, da sie separat behandelt wird als jede andere eingeschlossene Datei.Mit anderen Worten, um das erwartete Verhalten zu erzielen, müssen Sie es als global definieren.
quelle
included1.php
und später daraufincluded2.php
verweisen, ohne darauf zu verweisenparent.php
, und den Wert erhalten, in dem ich definiert habeincluded1.php
. Ich befolge die gleichen Bereichsregeln wie bei einem Code auf einer einzigen Seite. Nichts mehr.Hier ist eine Falle zu vermeiden. Wenn Sie innerhalb einer Funktion auf Ihre Variable $ name zugreifen müssen, müssen Sie "global $ name" sagen. am Anfang dieser Funktion. Sie müssen dies für jede Funktion in derselben Datei wiederholen.
include('front.inc'); global $name; function foo() { echo $name; } function bar() { echo $name; } foo(); bar();
zeigt nur Fehler an. Der richtige Weg, dies zu tun, wäre:
include('front.inc'); function foo() { global $name; echo $name; } function bar() { global $name; echo $name; } foo(); bar();
quelle
global $var
Sie , bevor Sie es in einer anderen Funktion verwenden.Das ist alles was Sie tun müssen:
Vorne
global $name; $name = 'james';
quelle