Variable-Scope verlassen? |
chip
Foren-Team Threadstarter
Beiträge: 419 |
Hallo,
ich hab mich schon in der PHP-Manual umgeschaut aber keine Lösung gefunden. Gibt es eine Möglichkeit auf eine Variable von einem includeten-Dokument aus einer Klasse (im includeten-Dokument) zuzugreifen? Konkret geht es darum, dass meine Template-Klasse if-Bedingungen auswerten soll und dazu auf Variablen zugreifen soll, die außerhalb der Template-Klasse sind - eben im Dokument, das die Klasse includet.
---
|
 Profil
Website
Editieren
Zitieren
|
inko
Fachidiot
Beiträge: 133 |
So ganz genau habe ich nicht verstanden, was Du genau tun willst, aber grundsätzlich scheint Dir objektorientierte Programmierung noch nicht ganz klar zu sein, denn ansonsten würdest Du die Variable einfach beim Aufruf einer Funktion der Klasse übergeben.
|
 Profil
Editieren
Zitieren
|
chip
Foren-Team Threadstarter
Beiträge: 419 |
Das mache ich ja. Ich suche mit preg_replace eine If-Bedingung im Template, übergebe diese an eine Funktion in der Klasse. Die Funktion in der Klasse soll aber nun, falls irgendeine Variable in der Bedingung vorkommt, diese überprüfen, auch wenn sie außerhalb der Klasse liegt.
---
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
globale Variablen befinden sich in $_GLOBALS. Auf Eigenschaften von Objekten (nicht von Klassen) kann man mit $this->varname oder $this->$varwithvarname zugreifen.
Ich verstehe jedoch nicht, wozu du ein eigenes Templatesystem baust - smarty.php.net
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
chip
Foren-Team Threadstarter
Beiträge: 419 |
Ich wollte halt eins, was ich selber programmiert habe und mit dem ich mich vollständig auskenne. Einen anderen Weg als globale Variablen gibt es scheinbar nicht
---
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Ich verstehe ja, das man mal selber bauen will um zu lernen. Wenn es jedoch um Sachen wie Templatesysteme geht, würde ich möglichst etwas Existierendes verwenden.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
chip
Foren-Team Threadstarter
Beiträge: 419 |
Mein Template-System funktioniert ja schon. Ich wollte es halt nur um eine nützliche Funktion erweitern. Bei smarty kommt ja hinzu, dass er die Templates sowieso cached und daraus funktionierenden PHP-Code erzeugt und das wollte ich eben nicht (k.A. warum )
---
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Weil die Seite sonst zu schnell sein könnte?
Bei einem Templatesystem kommt vor allem noch ein Problem dazu, sobald du es in Projekten einsetzt, an welchen mehrere Leute arbeiten. Die anderen müssen dann die Syntax und Fähigkeiten und Benennungen deines speziellen Templatesystems lernen. Dazu mußt du das erstmal dokumentieren. Das ist für beide Seiten zusätzlicher Lernaufwand.
Dies ist der Grund, warum ich XSLT als Templatesystem nutze. Da gibts sogar Bücher drüber - und ich brauche weniger Doku zu schreiben. *g*
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
chip
Foren-Team Threadstarter
Beiträge: 419 |
subjective schrieb am 19.10.2004 17:56
Dies ist der Grund, warum ich XSLT als Templatesystem nutze. Da gibts sogar Bücher drüber - und ich brauche weniger Doku zu schreiben. *g* |
Gibt's zu den in PHP integrierten Funktionen ein nettes deutsches Tutorial?
Übrigens, das stimmt schon, dass smarty durch Cachen sehr schnell ist, aber die erzeugten Seiten sind ja wieder eine Mischung aus PHP und HTML und das gefällt mir eben nicht so ganz.
---
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
mm weniger wenn du XSLT einsetzen willst, ist englisch Pflicht. Ich mache das jetzt schon etwas länger - von daher gucke ich nicht mehr nach Tutorials.
Übrigens, das stimmt schon, dass smarty durch Cachen sehr schnell ist, aber die erzeugten Seiten sind ja wieder eine Mischung aus PHP und HTML und das gefällt mir eben nicht so ganz. |
*ähm* Die erzeuten Seiten sind reiner Text welchen der Browser dann interpretiert (als HTML, JS, CSS, ...). PHP-Code sollten diese Seiten nicht mehr enthalten, da dies kein Browser kapieren würde. Das ist jedoch bei jedem Templatesystem so.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
chip
Foren-Team Threadstarter
Beiträge: 419 |
Sorry: Ich meine ja, dass die erzeugten Cache-Seiten, die dann an den Browser gesendet werden PHP-Code enthalten.
Es darf natürlich auch ein englisches Tutorial sein.
---
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Die Cache-Dateien werden nicht an den Browser geschickt. Sie werden ausgeführt.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
chip
Foren-Team Threadstarter
Beiträge: 419 |
Ja OK. *michfürmeineunklareausdrucksweiseschäm* Du hast ja recht, weist aber wie ich es gemeint habe.
---
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Ich verstehe aber nicht, warum du dies als Nachteil empfindest. Durch dieses Compilieren der Templates zu PHP ist Smarty deutlich schneller, als es mit String/RegEx-Funktionen wäre. Außerdem sollte sich ein Bytecode-Cache (Zend Accelerator zB) auch auf diese compilierten Templates auswirken - da es halt PHP-Dateien sind.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|