| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: Tutorial: Teil 4 - Wir implementieren einen Layouter im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo, nachdem im Teil 3 dieser Tutorialserie die Frage aufkam, wie man nach dem MVC-Prinzip dynamische Tables usw. ausgibt, ...
![]() |
| | #1 (permalink) |
| Registriert seit: 17.03.04 ![]() Likes: 2 | Anzeige Hallo, nachdem im Teil 3 dieser Tutorialserie die Frage aufkam, wie man nach dem MVC-Prinzip dynamische Tables usw. ausgibt, hab ich mir gedacht, "Da muss ich mal ein weiteres Tutorial drüber schreiben". Wer nicht weiß was MVC ist oder was es bedeutet, der kann sich das ganze mal auf Wikipedia anschauen. Bei unserem kleinen Framework wäre dann das Template = View, die Action = Controller und z.B. die DBMapper (zu denen kommen wir in einem weiteren Tutorial) = Model. Um jetzt z.B. die Daten aus einer Datenbank als Tabelle ins Template zu bekommen, greifen wir auf Layouter zurück. Aber was genau macht der Layouter? Der Layouter nimmt die Daten, die z.B. aus einer DB kommen, entgegen und rendert nun z.B. eine Tabelle daraus und übergibt diese ans Template. Was brauchen wir also alles? Wir brauchen eine neue Klasse, diese nennen wir TestLayouter.class.php und legen Sie ins Core Verzeichnis. Hier mal der Source der Klasse, ich hab die Klasse so einfach wie möglich gehalten. Es werden also keine Requestdaten oder so verarbeitet. TestLayouter.class.php PHP-Code: Dazu brauchen wir folgende Dateien aus dem letzten Tutorial: Main.class.php Main.tpl.php Wir öffnen die Main.class.php, und erweitern die Klasse so, dass Sie danach folgendermaßen ausschaut. PHP-Code: Deshalb öffnen wir nun das Template und erweitern es um ein einfaches echo $this->get('table'); Das Template sieht dann folgendermaßen aus: PHP-Code: Ich hoffe Ihr seit auch beim nächsten Mal wieder dabei, wenn es heißt "Wir bauen uns ein Framework, und PHP ist geil!".
__________________ Mfg Basic Avid - Use it or be used! - |
| | |
| | #2 (permalink) |
| Member of Honour ![]() | auch wenns etwas spät kommt, da ich das hier irgendwie aus den augen verloren hatte. aber ist es nicht an sich sinvoller, das in die template klasse mit einzubauen? ich hab mir dort ne methode reingebaut, die ähnlich wie dein layouter arbeitet und sich im endeffekt nur $tpl->assigntable($name,$id,$data); schimpft und per $this->getTable($name) abgerufen wird. ich versteh bei deiner sache nicht so ganz die notwendigkeit einer neuen klasse! grade da sich das ganze nur auf ne tabelle bezieht, was machst du wenn du zb listen noch häufig brauchst, oder dynamisch generierte links etc... ? ansonsten find ich den trick mit der __toString methode klasse!
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) | ||
| Themenstarter Registriert seit: 17.03.04 ![]() Likes: 2 | Zitat:
Zitat:
So einen Layouter kann man sehr abstrakt halten, und Ihn dann einfach weiter spezifizieren. Somit kann man sehr einfach jeden Tabellen-Typ darstellen, und auf jedes Problem individuell reagieren. Ich benutze zu den TableLayouter noch eine Table Klasse, diese Klasse bereitet mir die Daten aus einer DB auf und der Layouter verarbeitet diese dann.
__________________ Mfg Basic Avid - Use it or be used! - | ||
| | |
| | #4 (permalink) |
| Member of Honour ![]() | das bedeutet im "schlimmsten" fall baust du dir für jedes anwendungsszenario von vielgebruachen sachen (listen, tabllen, strange wiederkehrende verschalteltung von div elementen... etc. ne layout klasse und erweiterst die dann bis ins detail? das is beeindruckend, aber lohnt sich das wirklich? ich selbst hab bis jetzt nur ein projekt was man wirklich als solches betiteln kann, aber ich seh bei deinen sachen teils nicht so richtig den sinn, das so extrem aufzusplitten. kannst du mir die hindergründe da mal kurz darlegen, was nun wirklich der vorteil von vielen kleinen sachen gegenüber einer "dicken" ultimativen template klasse ist?
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #5 (permalink) | |||
| Themenstarter Registriert seit: 17.03.04 ![]() Likes: 2 | Zitat:
Ich habe z.B. einen HTMLTableLayouter dieser Layouter beinhaltet alles was ich für eine Tabelle mit Header und Navigation brauche. Jetzt brauch ich aber z.B. eine Tabelle die nur eine Zeile ausgibt, aber alle Daten der aktuellen Row darin anzeigt, in Deinem Fall müsste ich jetzt hergehen und eine neue Funktion in der Template-Klasse implementieren die genau sowas macht. Ich gehe jetzt aber her und erweitere die Klasse durch Vererbung/Ableitung und überschreiben der betroffenen Methoden. Somit bekomme ich alle Features der Parent-Klasse, und kann meine neue Klasse konkretisieren, und muss mich nicht nochmal um z.B. die Navigation kümmern. Zitat:
Zitat:
Ich könnte Dir jetzt noch einige Gründe nennen warum man nicht alles in eine Klasse packen soll, aber das würde den Rahmen sprengen.
__________________ Mfg Basic Avid - Use it or be used! - | |||
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Mit batch nur einen Teil umbennen | D31~$0u1 | Code Kitchen | 8 | 09.09.08 18:39 |
| Tutorial - Teil 3 - Die Template Engine | BasicAvid | (Web-) Design und webbasierte Sprachen | 21 | 09.04.08 23:41 |
| (Open) SSH Dll, zum implementieren in Programm | IsNull | Code Kitchen | 3 | 15.10.07 21:58 |
| history implementieren in eigener C-Shell | kito | Code Kitchen | 9 | 25.05.05 16:23 |