[PHP OOP] Template Classe verschluckt den Buffer?!? *** erledigt ***

strolch00

redraft.de
ID: 155297
L
21 April 2006
1.684
72
Hallo @ all,

als erstes mal die Frage kann es möglich sein das der Buffer einer Class irgendwie geNULLt wird?

Ich habe angefangen meine TemplateClass zu überarbeiten und baue gerade Cache und ifparser ein jedoch will der mir nu grad die Ausgabe nimmer bringen und ich habe bin langsam am zweifeln. Lt. var_dump() und print_r scheint alles bis zu fopen in Ordnung zu sein aber die Funktion Show will den echo nimmer bringen, und wenn ich in die Show() var_dump() schreibe kommt bei $this->buffer "NULL NULL NULL NULL".

Ich hoffe jemand weis nen Rat oder hatte ein ähnliches Problem schonmal. Vielleicht habe ich auch nur irgendwo nen Denkfehler drin weil es gestern zu spät und heut zu früh ist^^.

Ps seltsamerweise ist auch der $this->TagArray leer wenn ich var_dump() in setTag schreibe :-?

Danke schonmal für alle Antworten :pray: und Hilfestellungen/Lösungsansätze
 
Zuletzt bearbeitet:
@
if($this->clear) clearstatcache();
das solltest du generell nach filesystem operationen nutzen, sonst kanns zum serverüberlauf kommen.

@
fread($fp,filesize(TEMPLATEDIR.$this->TplFile));
siehe: file_get_contents

@
if($Cache === true && !defined('CACHE'))
define('CACHE', true);
elseif(!defined('CACHE'))
define('CACHE', false);
wieso definierst du eigenschaften im globalen namensraum, wenn sie interne klasseneigenschaften darstellen?


@
warum aber nun deine eigene variable auf einmal "NULL .. NULL" enthält, kann ich dir auch net sagen. wenn aber so oft "NULL" (als string) darin enthalten ist, ist definitiv eine zuweisung erfolgt. du wirst also stück für stück suchen müssen.
 
@
if($this->clear) clearstatcache();
das solltest du generell nach filesystem operationen nutzen, sonst kanns zum serverüberlauf kommen.

danke wird sowieso gemacht ich hab nur dort ne if drin für den fall das nochmal ne fileoperation später ausgeführt wird zweimal muss es ja net sein.

@
fread($fp,filesize(TEMPLATEDIR.$this->TplFile));
siehe: file_get_contents

danke ich wusste es gibt was einfachereres ;)
@
if($Cache === true && !defined('CACHE'))
define('CACHE', true);
elseif(!defined('CACHE'))
define('CACHE', false);
wieso definierst du eigenschaften im globalen namensraum, wenn sie interne klasseneigenschaften darstellen?

weil ich net jede Datei Cachen lassen will. Aber ich glaub ich weis was du meinst. Das kann ich auch in der Classe selber definieren weil die Variablenja dort schon da sind richtig ? wird gleich getestet
 
Hätte da mal noch ne frage kennt einer von euch ne alternative zu eval ?? Ich wil das eigentlich soweit es geht vermeiden, am liebsten gar net nutzen aber ich weis net wie ich es umgehen kann. Hat einer von euch da nen Gedankenanstoß für mich ?
 
Du könntest mit RegExp (schaue dir mal preg_replace() an) arbeiten.

habe ich doch schon
z.B.
PHP:
        $this->buffer = preg_replace("#\[\s*include\s+file\s*=\s*((\w|\.)+\w)\s*\]#isU", "@include('$1');", $this->buffer);

aber wie soll der server das verarbeiten wenn ich es durch den server ersetzten lasse

es passiert ja folgendes

tpl durchläuft klasse alles wird ersetzt und eigentlich ausgegeben würde auch passen wenn ich net php includen würde.

Durch die includes muss der server nochmal das zeug so verarbeiten mit den Includes und das geht soweit ich weis nur mit eval.

Aber ich mag eval net deswegen frag ich. Oder liege ich da falsch
 
Sorry, hab dich wohl falsch verstanden ...

Eventuell geht ja was mit variablen Variablen xD

Ansonsten einfach mal in den Source-Code von Smarty o.ä. gucken und schauen, wie die es machen :)