Php Autoload

Hallo,

ich nutze seit einiger Zeit die autoload Funktion von php.
In der __autoload.php rufe ich auf:

require_once(IPS_GetKernelDir() . „/scripts/53799.ips.php“);

wobei 53799 Nur Variablen enthält. Sowas wie Debug für die Meldungsausgabe true/false oder Definitionen von IDs. Das funktioniert bisher auch.
Nun wollte ich eine zweites Skript (35661.php) erstellen und globale Funktionen einbinden. Wenn ich aber in diesen Funktionen Variablen aus der 1. eingebundenen Datei aufrufen möchte, also z.B. eine $debug , gibt es die Variable in der Funktion nicht–> Fehlermeldung

Rufe ich die $debug dagegen in etwa der Schnellausführung auf, wird mir der passende Wert angezeigt.
Ich habe ebenfalls schon nur die oben genannte Zeile in der autoload zu laden und im Skript 53799 mit require(„35661.ips.php“) dieses Funktionsskript einzubinden, mit dem selben Ergebnis.

Was mache ich falsch?

Existiert die Funktion ‚IPS_GetKernelDir()‘ an der Stelle schon?
Wie erstellst und vorallem startest du das zweite Script? Ist das ein normales Symcon Script, welches über Ereignisse aufgerufen wird oder soll das als zweites geladen werden? Also in der autoload 2x require_once?

Ich denke schon, da das Einbinden des reinen Variablen Skriptes (hier das 53799) funktioniert. Also die lade ich wie gesagt über die __autoload.php und die darin angelegten Variablen kann ich nach dem Start von IPS sofort abfragen mit korrekten Werten.

Wie gesagt versucht habe ich den Weg auch über die autoload und auch mit require aus dem 1. Skript heraus, welches ja definitiv über autoload funktioniert. Beides führt nicht zum Ergebniss, dass ich die im 1. Skript definierten Variablen im zweiten nutzen kann.

Moin,

ich bin jetzt kein PHP Guru, aber ihr müsst glaube ich den Gültigkeitsbereich von Variablen beachten.

Im Schnellstart sind die Variablen sichtbar => gleicher Gültigkeitsbereich. Aber in Funktionen müsst ihr „GLOBALE“ variablen auch so ansprechen, entweder mit global $varname; oder $GLOBALS['varname'].

Gruß Heiko

1 „Gefällt mir“

HI,

ja perfekt das war es. Innerhalb der Benutzerdefinierten Funktion musste ich einmal

global $debug 

aufrufen und dann meckerte der Interpreter nicht mehr. Und die Variable wird natürlich wie gewünscht gelesen.
Vielen dank :slight_smile: