Mailinglisten-Archive |
* Andreas Heck <aheck at mozilla-center.de> schrieb: moin, > ich habe unter http://dotweb.berlios.de/ ein Projekt gestartet, um die > Features von ASP.NET in PHP zu implementieren. hmm, welche wären das ? <snip> > Konkret kann man damit Templates anlegen und bei Bedarf die einzelnen > HTML-Tags und Formularelemente als Objekte ansprechen, wie man das aus > der GUI-Programmierung gewohnt ist und man kann Events definieren, die > ausgelößt werden wenn z.B. die Variable action den Wert view hat und > dann wird eine vorher festgelegte Funktion ausgeführt. hmm. klingt nicht schlecht. wäre schön, wenn das bei der Gelegenheit auch gleich mit XUL ginge. <snip> > Falls euch das jetzt interessiert solltet ihr euch am besten mal das > Tutorial unter http://dotweb.berlios.de/tutorial.html anschauen. Falls Du schon eine Maillist dazu hast, dann trag mich bitte mit ein. btw ist mir beim Durchlesen der Seite folgendes aufgefallen: Die Struktur ist zwar recht "sauber" aber auch recht beschränkt, da Du immer nur ein bestimmtes Element manipulierst. patTemplate verfolgt ja einen rein Textuellen Ansatz - und dort können z.b. verschiedene Teil-Templates sich ihren Variablen-Scope teilen. Beipiel: Du hast ein Seitenelement, das nur unter einer bestimmten Bedingung eingeschaltet wird (z.b. Account-Daten wenn eingeloggt). Hier schaltet man einfach ein Template ein und füllt es mit den nötigen Daten. Soweit ja noch kein Problem bei dotweb - geht da sicher auch. Aber: nun kommt der Layouter auf die Idee, auf der ganzen Seite verteilt das an mehreren Stellen ("fettzenweise") darstellen zu wollen. Bei Deiner API muß man dann mehrere solche solche Widgets bauen, die dann einzeln gefüttert werden müssen. Bei der patTemplate geht das alles den Anwendungsentwickler nichts mehr an - der Layouter kann das selbst definieren. (grade bei Anwendungsdiensten ist das von großem Vorteil). Zudem bist Du bei Deiner API direkt an einzelnene Elemente festgenagelt und kannst die nur einzeln beeinflussen. Dabei muß aber der Programmierer genau wissen bzw. genau festlegen, wie die Seitenstruktur auszusehen hat. Zwar macht das gewisse Dinge einfacher, wenn man *nur* darauf aus ist, klassische GUIs per Web nachzubauen (was ich nicht unbedingt für sinnvoll halte), aber bei der Konfektionierbarkeit mußt Du damit große Abstriche machen. Semantisch scheint mir Deine Template-Engine eine Teilmenge von patTemplate zu sein, d.h. sie ließe sich mit einem angepaßten Template-Parser auch mit patTemplate simulieren: Dein Template wird zunächst als großes Einzeltemplate geparsed. Alle beeinflußbaren Attribute (sicher auch die content-section ;-)) der dotweb-Elemente werden dann durch passende Variablen ersetzt (die im Template definierten Daten werden dann als Standardwerte geladen). Man könnte sich hierfür sicher einfache ein Mapping von dotweb-Elementattributen auf Variablennamen überlegen (z.b. "DOTWEB:"<Element-ID>":"<Attribut-Name>). Nach genau diesem Mapping greift auch die dotweb-API auf die Elemente zu (genaugenommen greif sie nicht wirklich auf die Elemente, sondern nur auf die entsprechenden Inhalte - die DOM-Struktur gibt es ja innerhalb patTempalte dann nicht mehr). IMHO sollte das eigentlich ganz gut funktionieren und auch beide Ansätze innerhalb einer Anwendung verfügbar machen (den Layouter wirds freuen ;-)). Würde mich freuen, wenn wir diesen Weg gemeinsam implementieren könnten. Zum Event-Handling und Sitestruktur: Ich hab dazu ein eigenes Framework (einst aus dem Modulsystem des C*B hervorgegangen ...), das nicht nur die Seiten in Boxen modelliert und einzelne Seiten über einen "Multiplexer" abbildet (die loader-Box hat eine Tabelle mit ladbaren Boxen, die anhand eines URI-Parameters selektiert werden). Derzeit arbeite ich auch daran, das ganze mit einem URI- Handler derart zu verbacken, daß man den Boxnamen aus aus dem URL-Part statt der Query holen kann, z.b. http://foo.org/seite1/ http://foo.org/seite2/ ... Die einzelne Box bekommt dann auch den action-Parameter in ihrer Box-Config übergeben, ergo kann man da doch einfach ein switch() zur Auswertung nehmen. Handler-Routinen erst zu registrieren halte ich ehrlichgesagt für unnötige Kosmetik. Da wäre es eher sinnvoll, zum Modul-Code auch noch eine Tabelle mit möglichen Actions und deren Handlern beizulegen. Dort kann man später dann auch noch andere Informationen, z.b. fürs permission handling beilegen ... ./modules/box.foo/ -> box_display.inc => normaler Code zur Anzeige -> actions.db => definiert die möglichen actions actions.db ----------- action: validate_form source: $(action).inc handler: foobox_handle_$(action) -- action: store_data source: $(action).inc handler: foobox_handle_$(action) -- ... Mit etwas Hirnschmalz kann man da auch sicher gleich noch multiple views und Hilfsmittel für mehrseitige Assistenten und dergleichen mit reinbringen. Sowas sollte IMHO dann alles gleich vom Boxloader erschlagen werden, damit es nicht nochmal neu programmieren muß. Dazu gehört auch ein standardisiertes Handling von Durchschleifparametern. Je mehr solche Sachen abstrahiert werden, um so weniger Gedanken muß man sich dann als Modulentwickler um lokale Gegebenheiten wie URL-Aufbau, session-handling, usw machen ... Etwas Dokuemtation zu meinem Framework findet sich hier: http://nibiru.borg.metux.de:7000/wiki/index.php/BTPL2 (das wiki wird irgentwann wohl auch mal damit realisiert ;-)) cu PS: bevor jetzt jemand nach Smarty schreit - IMHO sind die beiden engines sogut wie gleichwertig und können sich gegenseitig simulieren. -- --------------------------------------------------------------------- Enrico Weigelt == metux IT service phone: +49 36207 519931 www: http://www.metux.de/ fax: +49 36207 519932 email: contact at metux.de cellphone: +49 174 7066481 --------------------------------------------------------------------- -- DSL ab 0 Euro. -- statische IP -- UUCP -- Hosting -- Webshops -- ---------------------------------------------------------------------
php::bar PHP Wiki - Listenarchive