PHP-include () 'd-Dateien übergeordnete Variablenbereich geben

8

Gibt es eine eingebettete Datei, die in einem übergeordneten Bereich verwendet werden soll? Das folgende Beispiel ist vereinfacht, macht aber den gleichen Job.

Im Wesentlichen wird eine Datei von einer Funktion eingeschlossen, aber der Umfang der enthaltenen Datei sollte der Bereich sein, in dem die Funktion aufgerufen wird, von der sie stammt.

main.php:

%Vor%

included.php:

%Vor%

Vielen Dank im Voraus,
Alexander.

BEARBEITEN: Lösung

Nun, irgendwie, dank der Beiträge von Chacha102.
Kann jetzt auch innerhalb einer Klasse aufgerufen werden!

main.php

%Vor%

included.php:

%Vor%

Wenn Sie eine Methode referenzieren wollen, muss diese öffentlich sein, aber das Ergebnis ist wie erwartet:

%Vor%

Nun, das hat wirklich keinen praktischen Nutzen, und der einzige Grund, warum ich das wissen wollte, ist, dass ich stur bin. Der Gedanke kam mir in den Sinn und ließ mich nicht besiegen: D

<rant>
Danke an alle, die dazu beigetragen haben. Außer die Person, die mich buhte. Es war eine einfache Frage, und jetzt haben wir herausgefunden, dass (komplizierte) Lösung existiert.
Überprüfe, ob es "der PHP-Methode entspricht". Einem Klienten je gesagt "Oh nein, das sollten wir nicht tun, es ist nicht die richtige Art, Dinge zu tun!"? Dachte nicht.
</rant>

Nochmals vielen Dank an Chacha102:)

    
zanbaldwin 06.02.2010, 03:18
quelle

2 Antworten

3
%Vor%

get_defined_vars() ruft ALLE Variablen ab, die in dem aufgerufenen Bereich definiert sind. extract() verwendet ein Array und definiert sie als lokale Variablen.

%Vor%

Somit wird das gewünschte Ergebnis erreicht. Vielleicht möchten Sie die Superglobals und andere Elemente aus den Variablen entfernen, da das Überschreiben von ihnen möglicherweise schlecht ist.

Sehen Sie sich diesen Kommentar an, um die schlechten auszupacken.

Um das Gegenteil zu erreichen, könnten Sie so etwas tun:

%Vor%

include.php

%Vor%

Aber alles in allem glaube ich nicht, dass Sie den gewünschten Effekt erzielen werden, da PHP nicht so gebaut wurde.

    
Tyler Carter 06.02.2010, 03:26
quelle
-1

Der einzige Weg, wie ich weiß, ist die Verwendung des superglobalen Arrays.

main.php:       

%Vor%

included.php:

%Vor%     
Brock Batsell 06.02.2010 03:26
quelle

Tags und Links