Halloooo!
Ich arbeite zzt. an einer Templateengine in PHP.
Diese Engine hat eine eigene kleine Scriptsprache, um den Inhalt der gefüllten Templates etwas genauer zu kontrollieren.
Ein Element ist der Controller:
Der macht nichts anderes als eine Schnittstelle zwischen Template und Engine bereitzustellen.
Im Script kann man einem Array Einträge hinzufügen.
Wenn ein Controller dann im Start-Tag diesen Eintrag enthält, das Array aber nicht, wird der Controller samt Inhalt gelöscht. Wenn der Eintrag aber existiert, werden nur die Tags entfernt, das obige Beispiel würde also "Inhalt" ergeben.
Soweit zur Theorie, in der Praxis habe ich folgendes Problem:
Zum Auslesen der Controller benutze ich den regulären Ausdruck
Dürfte soweit klar sein, der Controllername darf nur aus a-z, 0-9 sowie _ und - bestehen und muss mindestens ein Zeichen lang sein.
Das funktioniert auch perfekt mit nicht-verschachtelten Controllern wie im Beispiel oben.
Wenn ich jetzt aber z.B. folgenden Code nutze:
Dann verschluckt preg_match bzw. preg_match_all immer den Close-Tag vom verschachtelten Controller (in_test), sodass ich folgendes Array erhalte:
Das ist eigentlich auch schon alles.
Schonmal Danke im Voraus,
martinustreveri
~Edit: Wenn ich weitere Ebenen hinzufüge, bleibt immer nur ein Closetag übrig. Das hilft bei der Lösung des Problems auf jeden Fall, ich bin mir aber nicht genau sicher wie es hilft.
~Edit 2: Eine Möglichkeit wäre es schonmal, die Closetags genau so zu gestalten, wie die Starttags, z.B. <controller(a)></controller(a)>. Das ist allerdings aufwendig und sieht unschön aus.
Ich arbeite zzt. an einer Templateengine in PHP.
Diese Engine hat eine eigene kleine Scriptsprache, um den Inhalt der gefüllten Templates etwas genauer zu kontrollieren.
Ein Element ist der Controller:
Der macht nichts anderes als eine Schnittstelle zwischen Template und Engine bereitzustellen.
Im Script kann man einem Array Einträge hinzufügen.
Wenn ein Controller dann im Start-Tag diesen Eintrag enthält, das Array aber nicht, wird der Controller samt Inhalt gelöscht. Wenn der Eintrag aber existiert, werden nur die Tags entfernt, das obige Beispiel würde also "Inhalt" ergeben.
Soweit zur Theorie, in der Praxis habe ich folgendes Problem:
Zum Auslesen der Controller benutze ich den regulären Ausdruck
Dürfte soweit klar sein, der Controllername darf nur aus a-z, 0-9 sowie _ und - bestehen und muss mindestens ein Zeichen lang sein.
Das funktioniert auch perfekt mit nicht-verschachtelten Controllern wie im Beispiel oben.
Wenn ich jetzt aber z.B. folgenden Code nutze:
Dann verschluckt preg_match bzw. preg_match_all immer den Close-Tag vom verschachtelten Controller (in_test), sodass ich folgendes Array erhalte:
Das ist eigentlich auch schon alles.
Schonmal Danke im Voraus,
martinustreveri
~Edit: Wenn ich weitere Ebenen hinzufüge, bleibt immer nur ein Closetag übrig. Das hilft bei der Lösung des Problems auf jeden Fall, ich bin mir aber nicht genau sicher wie es hilft.
~Edit 2: Eine Möglichkeit wäre es schonmal, die Closetags genau so zu gestalten, wie die Starttags, z.B. <controller(a)></controller(a)>. Das ist allerdings aufwendig und sieht unschön aus.
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „martinustreveri“ ()