$globals

Hallo zusammen,

ich versuche eine PHP-Variable zu definieren, die in allen Scripten / Threads etc. fuer Lesen und Schreiben zur Verfuegung steht. Beispiel:

Script 1:

$GLOBALS['meine_var'] = "Geht!";

Script 2:

echo $GLOBALS['meine_var'];

Leider produziert Script 2 eine Fehlermeldung (‚meine_var‘ ist nicht vorhanden).

Was mache ich falsch?

Danke fuer die Hilfe,

Adrian

Du musst dein Skript1 auch in Skript2 per include/require laden. Ansonsten wird das nix.

Außerdem würde ich nicht $GLOBALS dafür verwenden.

paresy

Hi paresy,

danke fuer die schnelle Antwort. Das heisst also, dass die $GLOBALS fuer jede Skript-Ausfuehrung neu generiert wird? Und die einzige Loesung darin besteht, eifach eine IPS-Variable anzulegen und diese fuer die globalen Infos zu verwenden?

Adrian

es muss gar nicht $GLOBALS sein.

Es würde reichen, wenn Du Dir eine eigene Klasse oder auch nur eine include Datei „globaleVariablen.php“ definierst.

Dort kannst Du entweder im PHP Code oder z.B. aus einer Datenbank Variablen einlesen und anlegen.

Wenn Du diese Datei per include(„meineGlobalenVariablen.php“) in jedem Scriptwo die Variablen benötigst am Anfang einbindest, sollte das dein Problem lösen.

Gruß,

ernie

Hi ernie,

entweder habe ich Deinen Vorschlag nicht richtig verstanden, oder es geht nicht. Ich habe folgendes definiert:

  1. Eine Datei MeineGlobals:
global $meine_var;

  1. Script 1:
include 'MeineGlobals';

$meine_var = "Geht!";

  1. Script 2:

include 'MeineGlobals';

echo $meine_var;

Als Ergebnis bekomme ich einen leeren String.

Es scheint also so nicht zu funktionieren, oder?

Adrian

Denke eher so,

include ('MeineGlobals.ips.php');

Hi,

die Variable in meineGlobals.php anlegen, in Script 1 setzen und dann in Script 2 auslesen wird nicht klappen.

PHP Scripte haben von Haus aus keine Möglichkeit, Dinge zu behalten und später wieder auszugeben. Eine Variable gilt immer so lange, bis das Script komplett geladen ist.

Entweder willst Du eigentlich Konstanten haben, dann müsstetst Du in meineGlobals.php folgendes machen:

global $meine_var;
$meineVar = "abc";

In diesem Fall kannst Du in jedem Script auf „abc“ zugreifen, wo du den include machst.

Willst Du wirklich Variablen (und keine Konstanten), bleiben nur IPS-Variablen oder externer Speicher (lokale Dateien, eine MySQL Datenbank). Als Variablen Speicher könnte man noch die Session deines Browser benutzen …

Hier würdest Du in meineGlobals.php immer eine Datei auslesen die die aktuellen Variablen festlegt. In den eigentlichen Scripten müsstest Du dann die Datei öffnen die Variable überschreiben und die Datei zurückschreiben. Oder Du nimmst eine Datenbank im Hintergrund.

Aber warum willst Du nicht IPS Variablen nehmen? Dafür sind Sie doch da?

Gruß,

ernie

@Uwe: im Prinzip richtig, ich habe Testweise aber eien Include-Datei ohne Extension angelegt, was ja an sich auch geklappt hat (include ist ja nicht das Problem)

@ernie: auch richtig, man kann IPS-Variablen heranziehen, sofern deren Anzahl durch die Lizenzbedingungen nicht eingeschraenkt ist :slight_smile: Aber ein weiterer Grund ist, dass ich immer versuche - aus Standardisierungs- und Performancegruenden - mich an native, also PHP-eigene Funktionen zu halten. Aber in diesem Fall scheint das nicht zu gehen.

Auf jeden Fall vielen Dank an alle fuer die hilfreichen Antworten!

Adrian