Autor |
Nachricht |
Account gelöscht
Threadersteller
Ort: -
Alter: -
|
Verfasst Mi 31.03.2004 00:25
Titel [Frage] globale Variable in zur Laufzt. generierter Funktion |
|
|
Ich habe hier ein kleines Problem, welches mir auf den Geist geht. Et geht sich um Folgendes: Im Konstruktor werden alle vorhandenen _GET, _POST u.s.w. Variablen gesammelt und sollen in Zukunft in einem Array namens $this->gsVars sozusagen serialisiert werden.
Die Methode gsVarChange ersetzt durch eine zur Runtime erstellte Callback-Funktion alle Vorkommen nach dem Muster #$variable.erstedimension.zweitedimension# u.s.w. eines Strings durch die entsprechenden Werte aus $this->gsVars[variable][erstedimension][zweitedimension].
So sollte es sein. Aber in der mit create_function erstellten Funktion, die wohl wirklich als Funktion und nicht als Methode der Klasse augeführt wird, kann ich weder die Eigenschaft $this->gsVars verwenden (das Array ist hier dann leer). Das Schlüsselwort global bringt auch nichts.
Wie kann ich die Eigenschaft in der Funktion verfügbar machen? Seltsamerweise funktioniert das ganze, wenn ich bspw. anstatt $this->gsVars das autoglobale Array $_GET verwende und Werte über die Browserzeile ans SKript reiche.
[code:1:ca6773d0dd]class gsVarHandler extends gsParser {
/*
* Enthält Methoden zum Tauschen und Weiterverarbeiten der
* der Variablen in Templates.
* Der Konstruktor startet den Parser und handled ALLE
* nötigen Variablen (_GET, _POST, _SESSION, _COOKIE).
*/
var $gsVars=array();
function gsVarHandler() {
/*
* Konstruktor: parser instanziieren,
* Variablen Serialisieren
*/
$this->gsVars=$_GET;
$this->gsVars[wurst][eins][zwei][drei]=Und du bist Jim Knopf....;
!$_GET[gsTemplate] ? $this->gsTemplate=gsTemplateDir.gsDefaultTemplate : $this->gsTemplate=$_GET[gsTemplate];
$this->gsParseFile();
}
function gsVarChange($string) {
/*
* tauschen der Variablen
* der Form #$hans[wurst]# in einem String
*/
$pattern='/\#\$((.+)(\.(.+))*)\#/U';
//preg_match_all($pattern, $string, $arr);
//echo <b>.$arr[1][1].</b>;
$gsVars=$this->gsVars;
$string=preg_replace_callback($pattern, create_function('$matc
Zuletzt bearbeitet von am Mi 31.03.2004 08:51, insgesamt 2-mal bearbeitet
|
|
|
|
|
pRiMUS
Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht:
|
Verfasst Mi 31.03.2004 08:40
Titel
|
|
|
seh ich das falsch oder werden in der klasse gar keine variablen definiert?
schau mal ob da die variable $gsVars überhaupt wo definiert wurde.
var $gsVar;
sollte in der klasse irgendwo stehen. dann sollte man sie auch mit $this->gsVar bzw $klasse->gsVar ansprechen können.
|
|
|
|
|
Anzeige
|
|
|
Account gelöscht
Threadersteller
Ort: -
Alter: -
|
Verfasst Mi 31.03.2004 08:48
Titel
|
|
|
danke, das ist aber nicht das problem, die variablen sind üblicherweise (obwohl das nicht ganz sauber ist) nach der deklaration verfügbar. daran liegt es nicht, ich kann sie ja an jedem anderen punkt innerhalb einer methode (auch außerhalb der kind-klasse) ausgeben lassen. Ich werde das aber dennoch mal versuchen, danke für den hinweis.
//
nö. ich hab den quelltext oben mal geändert, das bringts aber leider wie gedacht auch nicht . das muss sich doch lösen lassen, oder muss ich echt über eine schleife gehen? *haarerauf*
Zuletzt bearbeitet von am Mi 31.03.2004 08:52, insgesamt 2-mal bearbeitet
|
|
|
|
|
Account gelöscht
Threadersteller
Ort: -
Alter: -
|
Verfasst Mi 31.03.2004 16:11
Titel
|
|
|
schon gut. funktioniert eh nicht, wie ich mittlerweile festgestellt habe.
Zuletzt bearbeitet von am Mi 31.03.2004 17:19, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
[CSS] Problem mit generierter Seite
[SQL] Variable durch Variable aus anderer Tabelle ersetzen
Online-Chat Funktion - mit On und Offline Funktion
Was sind globale Farben?
Linienstärkenerkennung in Illustrator -globale Aenderung
Font Explorer X / Globale Sortierung
|
|