0251 / 590 837 15
info@a-coding-project.de

Fahrplan für die Programmierung eines Webprojektes

Bei der Programmierung von Webprojekten gehe ich immer ähnlich vor. Meinen „Fahrplan“ schreibe ich mit diesem Artikel mal nieder. Lasst euch inspirieren oder inspiriert mich durch euer Feedback 😉

Aufbau der Klassenstruktur

Ganz am Anfang überlege ich mir welche Klassen ich benötige. Im Web sind oft gebrauchte Klassen zum Beispiel user oder page. Im zweiten Schritt überlege ich mir, welche öffentlichen Eigenschaften und Funktionen die Klasse haben soll. Man kann die Basis bereits erstellen, aber die Funktionen noch leer lassen. Eine gute Idee wäre es, hier bereits PHPDoc einzusetzen.

Aufbau der Datenbankstruktur

Bei den Klassen überlege ich mir nun, welche in die Datenbank gespeichert werden sollen. Dafür nutze ich in der Regel den Klassennamen als Tabellenname nutzen und die Eigenschaften als Spalten. Als Primary-Key nehme ich die Spalte(n), an der das Objekt gefunden werden kann. Wenn so etwas nicht vorhanden ist, ist eine ID ein guter Ersatz. Sollte eine Eigenschaft ein Objekt sein, so muss ich dessen Primary Key in die Tabelle speichern.

Funktionen ausarbeiten

Meine Funktionen sind zur Zeit alle noch leer. Nun wird es Zeit sie zu befüllen. Am besten ist es, wenn es zu dieser Zeit noch keinerlei Ausgaben gibt. Zum Testen kann man sich einfach Testseiten anlegen, mit denen man auch wenn die Oberfläche schon fertig ist noch testen kann.

Html-Seiten erstellen

An Hand von vorher aufgemalten Wireframes kann jetzt die Html-Oberfläche erstellt werden. Hier erst mal noch ohne Integration des PHP. Das bedeutet, einfach Dummy-Daten zu verwenden.

Der Vorteil der Trennung ist, dass man sich auf eine Arbeit konzentrieren kann. Somit ist es leichter zum Beispiel ein einheitliches Design umzusetzen. Außerdem ist es möglich diese Arbeit an einem Designer weiterzugeben.

Alles zusammen packen

Im letzten Schritt müssen PHP, Html & Co nur noch zusammengepackt werden. Hier ist Smarty eine gute Wahl.

Natürlich sollte man dann auch alles noch gut durchtesten 😉

Ist es bei euch anders?

Jetzt natürlich die spannende Frage: Entwickelt ihr großartig anders als ich und was könnte ich noch verbessern?

Kommentare

kevin geller schrieb am 19.11.2011:

ich finde, das als erstes die ordnerstruktur wichtig ist. Ich hab früher immer den fehler gemacht, das ich einfach drauf los geschrieben hab und mit jeder idee ein neuer ordner kam. wenn man von anfang an weis hier der kern mit den hauptdateien , darin ordner mit klassen und ordner mit funktionen , wieder im root dann uploads und downloads etc. dann schaut das am ende meist schon besser aus. hier würde man sogar von Anfang an Ordnung rein bringen, wenn man zb Smarty , Adodb und Imagecache verwendet, die ja bekanntlich alle eigene Cacheordner mit sich bringen. Meinen Eigenen Cacheordner kann ich dann von Anfang an mitplanen und im Code beachten.

Justus schrieb am 19.11.2011:

Wenn man eine richtig umfangreiche Webapplikation programmiert, kann sich ein PHP-Framework als hilfreich erweisen, weil es einem viele Grundaufgaben wie die Datenbankabfragen inklusive Validierung und Fehlerhandling abnimmt und - wenn man einmal damit umgehen kann - die Arbeit extrem verschnellert. Ich empfehle http://cakephp.org/

kevin geller schrieb am 19.11.2011:

Immer diese Werbung für frameworks. Frameworks sind schön da geb ich recht, aber für eine Anwendung sinnvoll? Nicht unbedingt: 1.) ist man als Programmierer individual, und das kann ein Framework nicht immer abdecken. 2.) ist in einem Framework meist zuviel drin. 3.) findet man ein framework nur mit dem was man braucht, muss man sich einarbeiten. Ich persönlich würde nie ein Framework verwenden, sondern arbeite mit meinen eigenen Klassen, wenn man es richtig nimmt ist das dann mein eigenes Framework

Der Abro schrieb am 20.11.2011:

Klingt schon sehr vernünftig. Bei eigenen Projekten lohnt es meist nicht sich vorher eine schön strukturierte ToDo-Liste aufzustellen etc. Templatesysteme wie Smarty sind eher nicht mein Fall, weil -wie Lehrdorf schon sagte- PHP bereits eine ausgezeichnete Templatesprache ist und unnötige Layer meines Erachtens nach zu vermeiden sind. Frameworks wie Cake sind eine tolle Sache, allerdings steht man am Ende immer vor der Entscheidung seine Bedürfnisse zurückzuschrauben um sie dem System anzupassen oder im Gegenfall das System für seine Bedürfnisse umzuschreiben (was dann ja auch wieder nicht Sinn der Sache war). Ich lege auch recht früh einzelne Dateien für Klassen & Funktionssammlungen an. Solange die Dateien einen Unterstrich vorangestellt haben weiß ich dass es hier noch etwas zu tun gibt bevor sie in die Applikation eingebunden werden kann. Die Klassen erhalten dann ebenfalls schon mal alle öffentlichen Methoden als Dummy, möglichst schon mit PHPDoc Beschreibung damit die 'BlackBox' nach außen hin komplett ist. Alles was ich weiter splitten möchte kommt abschließend in je einen Ordner der namentlich zur Hauptklasse passt. Die Tabellenstruktur der DB lehne ich nicht so stark an den Code an. Obschon ich zugeben muss dass ich gelegentlich schon mal nicht umherkomme entsprechende Infos in die Kommentarzeile zu packen, damit zumindest eine geringe Chance besteht dass man in einigen Monaten noch Durchblickt.

Marco Bunge schrieb am 18.03.2012:

Bei einem Projekt sollte man sich außerdem Grundlegende Fragen stellen. Ist ein Designpattern wie z.B. MVC nötig, oder ist der Umfang der Anwendung so klein, das kaum eines Benötigt wird. Dann kommen eher technische Aspekte dazu. Lade ich Klassen via simplen Autoload, einer Factory oder habe ich nur drei Klassen, die direkt inkludiert werden? Mein persönlicher Favorit einer Ordnerstruktur bildet sich immer aus "lib" (Klassen, Frameworks, etc.) und static (Bilder, Javascript, Css). Lib liegt bei mir über dem Docroot des Vhosts, wenn möglich. Wenn ich ein Framework nutze, kommt dann noch ein Appordner ebenfalls möglichst über dem Docroot dazu. Bevor ich mit Gedanken über die Klassen mache konzipiere ich immer die Datenbankstruktur, damit ich ein Problem möglichst gut lösen lässt. Basierend auf der Datenbankstruktur werden dann Klassen, u.a. Models entwickelt. Bei einem Abschluss (bzw. ab Ende der Alphaphase) überlege ich mir was lief gut was nicht so. Wo kann optimiert werden. Gerne kann man darüber noch ausführlicher diskutieren :-) MfG