PHP Template System

selberbauer

Captain
Registriert
Juni 2009
Beiträge
3.604
Hallo,
als Übung will ich mal ein kleines Template System entwerfen.
Ich dachte mir eine Art Addressbuch.
Ich melde mich mit meinem MySQL Account an, werde auf einer Seite weitergeleitet, in der ich dann alle Kontakte sehen kann und mit Hilfe eines Formulars neue hinzufügen kann.

Ich brauche nun eine grobe Hilfe, wie sich das umsetzen ließe.
Grundkenntnisse sind vorhanden und ich würde gerne Objektorientiert vorgehen.

Ich bräuchte nun Hilfe bei der Strukturierung, da es sehr viele Wege gibt, solch ein kleines System aufzubauen, aber es wenige gibt, die wirklich "gut" sind. Bisher habe ich mir das so vorgestellt:

Dateien
index.php
Hier wird die auszugebende HTML Datei mittels include eingelesen und variablen mit echo in der mitte der html ausgegeben ausgegeben, ein include('footer.tpl') schließt alles ab

lib.inc.php
Hier werden Klassen, Funktionen ausgelagert und dann mit lib.inc.php geladen
header.tpl
Enthält doctype, title, metatags, body

footer.tpl
Enthält abschließende body und html tags


Klassen
mysqli
Welche Klassen würde sich zudem anbieten?


MySQL-Tabellen
Kontakte
id, nachname, vorname, geburtstag, strasse, nr, ort, plz,mail, tel, mobil
Wie wende ich hier die Normaliesierungsform an?
Nachname kann ich nicht als schlüsselwort für den Vornamen nehmen, Straße auch nicht für den Ort, da beide mehrmals verwendet werden könnten.

HTML-Tabelle
"Lohnt" sich (aus Übungszwecken) es den HTML Code in MySQL einzulesen und diesen dann zusammensetzen anstatt vorgefertigte .tpl dateien zu benutzen?


Hoffe das ist jetzt nicht zu viel auf einmal ;)
 
Schau dir am besten mal ein wenig von Smarty ab. Ist ein kleines aber doch recht umfangreiches Template-System. Einfach zu erlenen und doch mächtig. Vielleicht kommst du dort auf Anregungen und kannst dir selbst sowas kleines bauen.
 
Ich kuck mir Smarty grad an..
Also Smarty ist Overkill, würde die Sache oben als Übung machen, wäre also gut wenn man so einen grundlegenden Aufbau hätte, die Umsetzung ist ja dann eine andere Sache.

Gibt es eine Seite, die die Architektur eines einfachen template-Systems genauer erläutert?
 
Zuletzt bearbeitet:
Also ich kenne kein einfacheres Template-System. Vielleicht verstehst du unter Template-System ja etwas anderes?

Beim Einsatz eines solchen Systems wird in diesen Templates eben der gesamte Quelltext (HTML) bereitgestellt. Dein Skript übergibt dabei nur die anzuzeigenden Daten an das System und dieser ersetzt Platzhalter an geeigneten Stellen durch die vom Skript übergebenen Daten.

So wird es dir ermöglicht, dass dein PHP-Code unangetastet weiterläuft, während du bspw. das Layout der Seite änderst.
 
Joah,
so meinte ich das ja, der Seitenwechsel passiert über $_GET..

Die Frage für mich ist nun, wie ich aus übungszwecken das am Besten aufbauen kann.

Also welche MySQL Tabellen ich anlegen muss, mit welchen Spalten, welche Klassen sich lohnen und einen groben Ansatz.

Momentan bin ich da sehr unsicher und ich will mir nicht irgendwas falsches aneignen.
 
Leg dir einen Plan an was du benötigst. Im Template-System benötigst du keinerlei Datenbank o.ä., sondern musst dich rein um den Code kümmern. Gefüttert wird dann ja erst alles über den Code selbst, welcher an das Template-System weitergegeben wird und dieses die Templates evaluiert.
 
Kauf dir ein Buch dazu. Es gibt tonnenweise PHP-Zeug aufm Markt, wo so einfaches Zeug vorgestellt wird.
 
selberbauer schrieb:
Hallo,
als Übung will ich mal ein kleines Template System entwerfen.
Dann beschäftige dich einmal mit verschiedenen Entwurfsmustern, zu Englisch Design Patterns. Als Lektüre kann ich folgendes Buch empfehlen: PHP Design Patterns, 2. Auflage. Im Web können auch die Code-Beispiele des Buches eingesehen werden. Auf folgender Seite http://www.phpdesignpatterns.de unter Code-Beispiele, Kapitel 8. Lade die Datei herunter und öffne den Ordner template-view. Viel Spaß beim Studieren :)

selberbauer schrieb:
id, nachname, vorname, geburtstag, strasse, nr, ort, plz,mail, tel, mobil
Wie wende ich hier die Normaliesierungsform an?
Nachname kann ich nicht als schlüsselwort für den Vornamen nehmen, Straße auch nicht für den Ort, da beide mehrmals verwendet werden könnten.
Bist du auch sicher, das Prinzip der Normalisierung verstanden zu haben? Die erste Normalform hast du bereits erfüllt (atomarer Wertebereich). Das Ziel der Normalisierung ist ja grundsätzlich, Redundanzen weitestgehend zu minimieren. In deinem Fall würde ich es allerdings so belassen, wie es ist. Felder wie nachname, vorname, ort oder plz zu normalisieren halte ich für übertrieben.
 
Dann beschäftige dich einmal mit verschiedenen Entwurfsmustern, zu Englisch Design Patterns. Als Lektüre kann ich folgendes Buch empfehlen: PHP Design Patterns, 2. Auflage. Im Web können auch die Code-Beispiele des Buches eingesehen werden. Auf folgender Seite http://www.phpdesignpatterns.de unter Code-Beispiele, Kapitel 8. Lade die Datei herunter und öffne den Ordner template-view. Viel Spaß beim Studieren
Werde es mir mal durchschauen ;)

ch suche auch gerade nach einer möglichkeit den php code vom html zu trennen.

Was mich an der ganzen Geschichte mit dem dynamischen html total verunsichert ist, dass so ein Code-Durchfall bei rauskommt.
Irgenwie hat man das Gefühl man pfuscht grad gewaltig im Vergleich zu eigenem HTML Code, kann es aber sein, dass nur Pfusch möglich ist?

Ist das nicht der normale Weg?

(wird im übrigen inzwischen empfohlen, wenn man sich eine eigene "engine" schreiben will ... smarty und co sind zu deftig)
Das ist mit der Zeit immer so ;)
Manchmal ist neu einfacher als modifizieren :p
 
Zurück
Oben