Ich hab mir nun auch vorgenommen mal eine eigene Templattklasse zu entwickeln. Wir würdet ihr dabei vorgehen? Ich habe mir die Funktion-struktur oder bzw. Ablauf etwa so vorgestellt:
1. Arrays einlesen und rekursiv füllen ( Assign )
2. Bei der Absicht mit Display
2.1. Angegebene Template-Datei auf Existenz prüfen sowie bei Erfolg das DIR ermitteln
2.2. Datei als String auslesen. Entweder mit file_ob_content oder besser mit fred? Kennt ihr da nennenswerte Zeitdifferenzen? Was ist schneller?
2.3. Prüfen ob die gechanchte PHP-Datei aus der TPL-Datei existiert oder verändert wurde
2.3.1. Wenn verändert oder nicht vorhanden, erzeugen)
2.4. Komplilieren
2.4.1. Alle {}-Klammern bspw. mit preg_match oder ( _all ) einlesen
2.4.2. Auf Fehler prüfen
2.4.3. Die generierte Datei erzeugen und den String Zeile für Zeile abarbeiten
2.5. diese Datei includieren und mit den Assign.Arrays harmonisieren.
Das wären mal meine Ideen bis jetzt. Allerdings hab ich noch Subtemplates nicht berücksichtigt. Was ich noch nicht ganz verstanden habe, wie das mit den ID's funktioniert, damit die Subtemplates verknüpft werden können. Ich kam der Logik noch nicht ganz auf der Spur.. Anbei: Wie baut ihr die Dateinamen auf? Mit einem Logarismus? Was für Anhaltspunkte benutzt ihr dabei? Filesize,Zeichenlänge der Datei als String?
Ich hätte da noch eine Frage. Ich bin leider kein Regex Experte.
Mein Ziel ist, nur Strings einzulesen, welche {} enthalten, dabei kam mir noch die Idee, das { in der Anzahl ähnlich
zu begrenzen. Am besten wäre natürlich ein preg_match(_all), dass mir x arrays in array liefert.
[0] ( ganzer {} String )
[1] ( { )
[2] ( [a-Z / ] ) - Operatoren
[3] ( $Variable )
[4] ( [a-Z / ] )
[5] ( $Variable )
[6] ( } )
Anhand [2] ggf. die Funktionen vertiefen, Schleifen etc. und wieder mit Preg_match abarbeiten.
Ist der Denkansatz so richtig? Ist das mit preg_match_all() überhaupt so möglich so aufzubauen, dass im abweichenden falle, die anderen [x] leer bleiben, falls nicht vorhanden? so, dass man struktuiert ggf. rekusiv damit arbeiten bzw. alles abarbeiten kann.
Mein bisherige Regex-Versuche
oder auch
aber am 'logischsten' wäre mir sowas ( keine Ahnung ob das jetzt syntaxtisch Richtig ist )
Mh, oder wäre es sinnvoller zuerst
[0] Alles
[1] {
[2] a-Z / $
[3] }
und dann abarbeiten?
1. Arrays einlesen und rekursiv füllen ( Assign )
2. Bei der Absicht mit Display
2.1. Angegebene Template-Datei auf Existenz prüfen sowie bei Erfolg das DIR ermitteln
2.2. Datei als String auslesen. Entweder mit file_ob_content oder besser mit fred? Kennt ihr da nennenswerte Zeitdifferenzen? Was ist schneller?
2.3. Prüfen ob die gechanchte PHP-Datei aus der TPL-Datei existiert oder verändert wurde
2.3.1. Wenn verändert oder nicht vorhanden, erzeugen)
2.4. Komplilieren
2.4.1. Alle {}-Klammern bspw. mit preg_match oder ( _all ) einlesen
2.4.2. Auf Fehler prüfen
2.4.3. Die generierte Datei erzeugen und den String Zeile für Zeile abarbeiten
2.5. diese Datei includieren und mit den Assign.Arrays harmonisieren.
Das wären mal meine Ideen bis jetzt. Allerdings hab ich noch Subtemplates nicht berücksichtigt. Was ich noch nicht ganz verstanden habe, wie das mit den ID's funktioniert, damit die Subtemplates verknüpft werden können. Ich kam der Logik noch nicht ganz auf der Spur.. Anbei: Wie baut ihr die Dateinamen auf? Mit einem Logarismus? Was für Anhaltspunkte benutzt ihr dabei? Filesize,Zeichenlänge der Datei als String?
Ich hätte da noch eine Frage. Ich bin leider kein Regex Experte.
Mein Ziel ist, nur Strings einzulesen, welche {} enthalten, dabei kam mir noch die Idee, das { in der Anzahl ähnlich
Code:
/\{{1,1}/
[0] ( ganzer {} String )
[1] ( { )
[2] ( [a-Z / ] ) - Operatoren
[3] ( $Variable )
[4] ( [a-Z / ] )
[5] ( $Variable )
[6] ( } )
Anhand [2] ggf. die Funktionen vertiefen, Schleifen etc. und wieder mit Preg_match abarbeiten.
Ist der Denkansatz so richtig? Ist das mit preg_match_all() überhaupt so möglich so aufzubauen, dass im abweichenden falle, die anderen [x] leer bleiben, falls nicht vorhanden? so, dass man struktuiert ggf. rekusiv damit arbeiten bzw. alles abarbeiten kann.
Mein bisherige Regex-Versuche
Code:
~(\{)?([ a-z0-9\_\-\.]+)?(?!\: )(\})~Uxs
oder auch
Code:
%[(/\{{1,1}/)]+?[/? {0,}/]+[\$](.*)}%U
Code:
~( (\{{1,1}) ?([a-Z/]) ([\$]+[a-Z]) ?([a-Z/]) !([\$]+[a-Z]) (\}{1,1}) )~U
[0] Alles
[1] {
[2] a-Z / $
[3] }
und dann abarbeiten?
Kommentar