Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
17.05.2009, 13:35
the_Crow



Zur Zeit arbeite ich an einem Template-System in PHP5. Das Ziel ist es Code und Design voneinander zu trennen.

Wenns fertig is soll es so weit wie möglich objektorientiert sein. Momentan ist aber nur ein kleiner Teil wirklich OOP.
Manches mag auf den ersten Blick auch etwas umständlich oder seltsam gelöst aussehn, aber es ist ja noch WIP.
Für Lösungen, um es noch objektorientierter zu machen, bin ich immer offen :D

Demo: http://files.the-crow.at/template_system/
Sehn tut man eigentlich nicht viel. Ist nur eine Testeite.

Wer sichs mal etwas genauer ansehn will:
Source: http://files.the-crow.at/template_system/source/
Download: http://files.the-crow.at/template_system/template_system_alpha1.rar

--

www.the-crow.at - meine persönliche Website | TibiaGerman | Twitter | Wiaschtlsiada

zum Seitenanfang zum Seitenende Profil || Suche
001
17.05.2009, 15:19
theDon



Es gibt preg_replace, und man darf das durchaus benutzen.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
002
18.05.2009, 09:37
luckerking



Das Template System, das ich in meinem CMS Jakitor benutze, funktioniert ähnlich.
Es wird eine PHP Datei aufgerufen, die die Werte in einem Array übergeben bekommt.
In dieser PHP Datei kann man nun die Werte bearbeiten und das $markers Array weitergeben. Diese Marker im Html ({{marker}}) werden dann durch den entsprechenden Array Eintrag ersetzt.

Wenn du auf PHP verzichten kannst, dann solltest du dir mal XSLT anschauen. Derzeit benutzt ich noch PHP da ich dann noch mehr Freiheit habe und Methoden und Klassen verwenden kann, die ich selbst programmiert habe. Trotzdem werde ich mir demächst XSLT anschauen.

--

zum Seitenanfang zum Seitenende Profil || Suche
003
18.05.2009, 10:48
Ryu



Eine grundlegende Frage:

Was ist deine Motivation ein eigenes Template System zu entwickeln? Es gibt ja bereits eine vielzahl sehr ausgereifter Systeme wie zB Smarty. Entwickelst du das System aus reinen Lernzwecken?

Zur OOP:

Da du mit PHP5 arbeitest würde ich dir folgende fehlende Methoden innerhalb der Klasse ans Herz legen:
__constuct() und __desctruct(), um festzulegen was bei der Instanzierung bzw. der Zerstörung der Klasse passieren soll, und __call() um ggf Fehlermeldungen auszugeben, wenn ein unwissender externer Programmierer versucht auf nicht vorhandene Funktionen zuzugreifen. Zu finden in der Dokumentation unter 'magische Methoden':
http://at2.php.net/manual/de/language.oop5.magic.php

Beispiel einer __call() Methode:
Quellcode:public function __call($methodName, $parameters) {
        try {
            $trace = debug_backtrace();
            $trace = $trace[1];
            $file = file($trace['file']);

            $this->mcomExit("<b><font color='red'>ClassCall Failed:</font></b> Tried to call '$methodName' at ".basename($trace['file'])." on line ".$trace['line']." ( ".trim(htmlspecialchars($file[$trace['line']-1]))." )");
            unset($trace);
            unset($file);
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
Variablen-Austausch:
Quellcode:$g_Template->replaceTemplate ("{title}", $g_sTitle); Einen Aufruf wie diesen, finde ich sehr unschön, da ich mir denke alle Variablen sollten doch in geschwungenen Klammern stehen... oder irre ich mich? Warum muss der Programmierer dann beim Austausch die Mengenklammern mit angeben?
Falls du Probleme mit Regulären Ausdrücken hast, kann ich dir ein Programm ans Herz legen, dass mir schon so manches Regex Rätsel gelöst hat: ;)
http://www.regexbuddy.com/

Liebe Grüße und viel Spaß noch mit deinem Projekt,
Ryu

--

„Damn it!“ - Jack Bauer
Blog
EVEMiner

zum Seitenanfang zum Seitenende Profil || Suche
004
18.05.2009, 13:30
the_Crow



Zitat:
Ryu postete
Eine grundlegende Frage:

Was ist deine Motivation ein eigenes Template System zu entwickeln? Es gibt ja bereits eine vielzahl sehr ausgereifter Systeme wie zB Smarty. Entwickelst du das System aus reinen Lernzwecken?

Es ist nur zu Lernzwecken. Ich will mich einfach mal mit OOP in PHP5 auseinander setzen.

Zitat:
Ryu postete
Zur OOP:

Da du mit PHP5 arbeitest würde ich dir folgende fehlende Methoden innerhalb der Klasse ans Herz legen:
__constuct() und __desctruct(), um festzulegen was bei der Instanzierung bzw. der Zerstörung der Klasse passieren soll, und __call() um ggf Fehlermeldungen auszugeben, wenn ein unwissender externer Programmierer versucht auf nicht vorhandene Funktionen zuzugreifen.

Danke für den Tipp. Ich werds einbaun.

Zitat:
Ryu postete
Variablen-Austausch:
Quellcode:$g_Template->replaceTemplate ("{title}", $g_sTitle); Einen Aufruf wie diesen, finde ich sehr unschön, da ich mir denke alle Variablen sollten doch in geschwungenen Klammern stehen... oder irre ich mich? Warum muss der Programmierer dann beim Austausch die Mengenklammern mit angeben?
Falls du Probleme mit Regulären Ausdrücken hast, kann ich dir ein Programm ans Herz legen, dass mir schon so manches Regex Rätsel gelöst hat: ;)
http://www.regexbuddy.com/
Stimmt schon. Die Variablen sollten immer in geschwungenen Klammern stehn. Also könnte man die beim Funktionsparameter weglassen, wenn ich die entsprechende Codestelle ändere.

Gibts Regexbuddy auch gratis?

--

www.the-crow.at - meine persönliche Website | TibiaGerman | Twitter | Wiaschtlsiada

zum Seitenanfang zum Seitenende Profil || Suche
005
18.05.2009, 13:51
Ryu



Nein gibts leider nicht gratis. Man kann sich allerdings eine Test-Version herunter laden, wobei ich finde die 30 Euronen sind keine Fehl-Investition, wenn ich mir denke was ich mir schon so allerhand Schrott per Steam gekauft hab... :D

Liebe Grüße

--

„Damn it!“ - Jack Bauer
Blog
EVEMiner


Dieser Beitrag wurde am 18.05.2009 um 13:52 von Ryu bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
18.05.2009, 14:07
Adrian_Broher
Admin


http://sourceforge.net/projects/quregexmm/

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.

zum Seitenanfang zum Seitenende Profil || Suche
007
18.05.2009, 14:37
luckerking



http://gskinner.com/RegExr/

--

zum Seitenanfang zum Seitenende Profil || Suche