Moin!
ich habe jetzt meine erste größere AJAX-Anwendung geschrieben und bin mit den Nerven völlig runter.
Ich habe ca. 60 php-Seiten und 20 js-Dateien benutzt; jede Interaktions-Maske ist eine Kombination aus einer php-Datei für das Interface, einer js-Datei fürs AJAX und einer zweiten php-Datei für das Schreiben der Daten in die MySQL-Datenbank.
Das klingt mir deutlich zu viel.
Mein aktuelles Projekt besteht aus grob vier PHP-Dateien, einer JS-Datei und einer größeren Menge an HTML-Templates. Zusätzlich (das zähle ich nicht mit, weil als Paket hinzugefügt) Smarty als Template-Engine und jQuery mit Plugins (ajaxForm, Tooltip und Thickbox).
Das allerwichtigste aber: Eine .htaccess, die per Rewriting jede ".html"-URL auf die eine PHP-Datei mappt, und jede ".ajax"-URL auf eine zweite PHP-Datei. Anhand der URL wird dann das passende Content-Template in das Master-Template eingesetzt (bei ".html") oder auch nicht (bei ".ajax").
Ich gebe aber gerne zu, dass in diesem Konglomerat noch so gut wie keinerlei Business-Logik steckt. Die würde vermutlich die Zahl der PHP-Dateien noch etwas erhöhen - aber keinesfalls auf 60 Stück.
Irgendwie habe ich aber das Gefühl, dass ich den Code nicht wirklich gut (effizient) gschrieben habe.
Das Gefühl würde ich auch kriegen.
Kennt hier jemand eine Tool (Buch,Entwicklungsumgebung, oä) mit dem man effizient AJAX-Anwendungen entwickeln kann? Interessieren würden mich Punkte wie
- Wie organisiert man die DB-Zugriffe (einmal richtig, oder viele kleine)
Man erstellt sich eine PHP-Klasse (am besten nutzt man PHP 5 und mysqli als Basisklasse, die man ggf. nur noch leicht erweitert) für DB-Zugriffe, der man dann eigentlich nur noch Querys übergibt von einer zweiten Ebene von Klassen, die die Datenbankabstraktion enthalten (also Umsetzung von allgemeiner Datenlogik auf konkrete Datenbanksprache). Diese zweite Ebene wird angesteuert von einer dritten Ebene, die die Business-Logik verkörpert.
Die Unit-Tests können dann schön arbeiten: Die Border-Klasse der Datenbank (und ggf. auch die Klassen für Dateizugriffe, Mailversand etc.) wird in einem eigenständigen Test-Set auf Funktion geprüft, alle Klassen der zweiten Ebene verwenden für ihre Tests hingegen nur Mocks dieser Border-Klassen, die konsistentes Verhalten simulieren, ohne dass die Notwendigkeit einer echten, befüllten Datenbank (oder eines Dateisystems etc.) besteht. Dasselbe gilt auch für die Klassen in Ebene 3 etc.
- Erstellen von Formularen zentral steuern
Templates verwende. Kein Formular ist wie das andere, ich tue mich gedanklich schwer, das generatormäßig abzubilden.
- Animationen einbinden
jQuery verwenden. Z.B. auch mit dem Plugin "Interface".
- Vielleicht kann man auch über Objektorientierung in php was machen
Wie gesagt: Größere Applikationen NICHT objektorientiert und testgetrieben zu entwickelt halte ich für absoluten Wahnsinn und viel zu fehleranfällig.
- oder über xslt
Ist nur dasselbe in grün: Bringt dich substantiell nicht weiter.
- Sven Rautenberg
"Love your nation - respect the others."