Include - ID des aufrufendes skripts ermitteln

Tag,
ich möchte die ID des aufrufenden Skripts in der Include Datei ermitteln.

Mit

$ParentID = IPS_GetParent($_IPS['SELF']);

bekomme ich den übergeordneten Ordner. Wie bekomme ich die SkriptID des aufrufenden Skripts?

Danke und lg

ohne GetParent() , die ID steht doch schon in $_IPS[‚SELF‘] :smiley:

1 „Gefällt mir“

Ich denke er meinte, er möchte die ID des Skripts haben, welche das Skript mit include einbindet. Oder?

1 „Gefällt mir“

Exakt. Hintergrund ist dass das Include Skript von mehreren anderen Skripten aufgerufen wird und ich aber je nachdem welches Skript das Include aufruft reagieren muss.

Edit: Hab die Frage etwas besser formuliert :slight_smile:

Eventuell eine Variable im aufrufenden (dort wo das include steht) setzen und diese dann im aufgerufenen (jenes welches inkludiert wird) abfragen?

1 „Gefällt mir“

Und darauf hab ich ja geantwortet. $_IPS[‚SELF‘] liefert das wirklich das Script aus IPS, die Include-Datei hat ja ggf. gar keine Script-ID (sogar idR nicht).

wenn du z.B. include („test.php“); (welches nur echo $_IPS[‚SELF‘]; beinhaltet) in 3 Scripte einbaust und die 3 Scripte aufrufst, bekommst du die 3 verschiedenen Script-IDs.

So gesehen hast du natürlich recht. Das Include-Skript verhält sich, als wäre es als wäre es Teil des inkludierenden Skripts. Somit sollte SELF die ID vom Skript haben, welches das include verwendet.

Für sowas ist include nicht gedacht.
Übergib doch an die aufrufende Funktion als Parameter welches Verhalten erwartet wird.

Magst du ausführen warum?
Weil include macht doch genau das. Den Inhalt vom include in das andere Script einbinden.
Entsprechend ändern sich die IPS Systemvariablen auch nicht.
Michael

Schließe mich der Frage an, include ist nur eine Option identischen Code an mehreren Stellen zu verwenden und zentral zu pflegen.

Der Code unterscheidet sich dann aber auch nicht und es läuft im gleichen Kontext.
Ein include wird in dem Sinne nicht aufgerufen. Vor Ausführung wird der code hineinkopiert.
Im Grunde ist es reines Copy, Paste.
Wenn sich eine inkludierte Funktion anders verhalten soll muss man es ihr übergeben oder über Bedingtes inkludieren eine andere Funktion nutzen.

Darüber hab ich hinweggesehen, weil ich wußte was cbeham meinte. Wobei ich sehe, die selbe Terminologie verwendet zu haben. Asche auf mein Haupt.

Hat ja keiner gesagt, könnte man so lesen, aber hat keiner gemeint. Die ID des aufrufenden (den Code aufrufenden) Scriptes wollte er haben. Er hat nicht gesagt, das er einen Include aufruft… oder wie man das verstehen mag. Im höchsten Fall ruft er eine Funktion in dem Include auf… Include ist nix anderes als Platzhalter für „wo anders stehender Code“.

Und darum ist ja in $_IPS[‚SELF‘] die ursprüngliche ID.
Also genauso wie gewünscht :slight_smile:
Michael

1 „Gefällt mir“