Projekt vom Start bis Ende

ichhabenicht

Mitglied
Hallo,

es wird ja immer über den Code an sich geredet, aber ich habe noch nie irgendwo gelesen wie ein PHP-Projekt überhaupt entsteht.

Wie plant ihr euchre Projekte?
Wie sehen eure Verzeichnisse und Dateien aus? Habt ihr dafür Richtlinien oder schmeißt ihr einfach die Dateien irgendwo rein und gut?

Ich hoffe es ist verständlich worauf ich hinaus will. :)
Wenn hier jemand Quellen für solches Wissen hat, würde mich das auch brennend interessieren.

MfG ichnicht
 
Hi,

ich persönlich plane meine Projekte eig. nie wirklich.
was die Dateien angeht, habe ich (bei größeren projekten) meist einen "contents"-Order und einen "system"-Ordner. Eventuell kommt dann noch ein "html"-Ordner dazu.

mich würde auch mal Interessiere, ob es irgendliche Quellen für die Planung gibt.

Gruß
 
Zunächst einmal kommt es darauf an, ob du objektorientiertes PHP programmieren möchtest oder rein prozedurales. Das nächste Kriterium ist sicher der Umfang deines Projektes. Handelt es sich bei deinem Projekt um ein kleines, verwendest du also nur ein paar wenige Skripte, lege einen Ordner "functions" an und schreibe dort alle PHP Funktionen rein. Ist es allerdings ein größeres Projekt plane es gut durch, sonst merkst du am Ende wie viel Arbeit du dir evtl. hättest ersparen können.

So oder so wirst du relativ schnell herausfinden, dass es keine optimale Vorgehensweise gibt. Für jeden Zweck, gibt es halt eine eigene...

Beispiel:
Du planst alles sukzessive durch, doch nach 5 oder 6 Tagen merkst du, dass du eigentlich ja auch ein Templatesystem hättest verwenden können. Du schaust also nach, was es da so gibt und stöst auf das Zend-Framework oder auch nur Smarty. Blöderweise musst du nun feststellen, dass dein bisheriger Code praktisch nutzlos geworden ist und deine ganze Struktur neu aufgebaut werden muss.
Du lernst daraus und nutzt im nächsten Projekt von Anfang an das Zend-Framework. Nach einiger Zeit stellst du allerdings fest, dass deine Anforderungen eigentlich so gering sind, dass dieses Framework alles vollkommen überlädt und ein einfacher Ordner mit dem Namen "functions" und darin 5 Dateien ausgereicht hätte.

==> Alles schon vorgekommen...
 
Also bei mir ist es sowohl als auch: meine Projekte bestehen meistens aus kleineren Projekten (bei mir meistens umfangreichere Klassen) und die setzen sich dann zum Gesamtprojekt zusammen.

Meine Ordnerstruktur sieht in etwa so aus:
ajax // Request-Dateien für AJAX
classes
> basic // Grundstrukturen wie besondere Arrayfunktionen, Sessions, Cookies, MySQL etc.
> features // Besondere Klassen
> file // Klassen welche Dateitypen (XML, Feeds etc.) behandeln
conf // Konfigurationsdateien
data // Dateien
functions // Funktionen
images // Bilderordner
javascript // JavaScript-Dateien
pages // Seiten
styles // CSS-Dateien
templates // Templates
upload // Hochgeladene Dateien
 
Je nach Größe und Anforderungen an die Skalierbarkeit kann die Planung und Umsetzung auf verschiedensten Wegen angegangen werden. Während beispielsweise kommerziell orientierte Projekte grundsätzlich erstmal via Stift und Papier über verschiedene Instanzen geplant und organisiert werden sollte, können persönliche Vorhaben ohne Zeitlimit ohne großartige Vorüberlegungen initiiert werden.
Durch die Ungebundenheit passieren mehr Fehler, aber vor allem zum (Kennen)Lernen und Üben ist das meiner Meinung nach ideal um nen Gespür für weitere Vorhaben zu bekommen.

Die grundlegenden Sachen sind unabhängig von der verwendeten Technologie: Was soll realisiert werden? Wie soll es realisiert werden? Wer realisiert es? Meilensteine, etc.
Mit der Entscheidung der verwendeten Technologien sollte überlegt werden, welche Werkzeuge, welche Hardware, ... eingesetzt wird.
Da du hier konkret PHP vorschlägst, möchte ich darauf auch eingehen: Für den Workbetrieb eignet sich meist eine Linux-PHP-Umgebung mit einer Datenbank und einem Webserver deiner Wahl, sowie entsprechenden Diensten und Erweiterungen. Am weitesten verbreitet ist das LAMP-Schema (Linux, Apache, MySQL, PHP).
Für die Entwicklung setzen viele auf eine WAMP-Umgebung - Es hat sich bewährt, und reicht für viele Belange.

Als IDE eignen sich meiner Meinung nach sowohl das Zend Studio als auch die PDT for Eclipse. Auch wenn das ZS ein wenig schneller arbeitet und besser mit den Objekttypen umgehen konnte, bin ich sehr zufrieden mit den PDT. Eclipse ist für mich auch erste Wahl betreffs Java, J2EE, etc.

Für größere Anwendungen ist des Weiteren auch der Einsatz eines oder mehrerer Frameworks sinnvoll. Auch wenn hier und da suboptimale Ansätze verfolgt werden, ist das Zend Framework sehr solide, aber auch elends träge. Ein Leichtgewicht im Gegensatz dazu ist CodeIgniter, welches aber auch völlig andere Wege einschlägt, und noch auf OOP @ PHP4 ausgerichtet ist.

An dieser Stelle könnte man nun noch mit diversen anderen Themen ankommen, das interessiert dich aber wahrscheinlich nicht großartig. ;)

Je nach Zweck organisiere ich Webapplikationen entweder lediglich im öffentlich zugänglichen Ordner (htdocs, httpdocs, public, ...), oder nach etwa folgendem Schema:
  • project
    • application / system
      • project-bootstrap (Proxy für Application Bootstrap)
      • domains
        • www
          • models
          • modules (Models, Controller, Views, ...)
          • resources (Konfiguration, ...)
          • storage (Cache, Modul-Datenbestände, ...)
          • views (Helfer, Layouts, globale Scripts)
          • application-bootstrap
        • ...
      • library (ZF, CI, PEAR, ...)
      • resources (globale Konfigurationen, ...)
    • logs
    • public
      • layout (css, Layout-spezifisches, ...)
      • scripts (JS, JS-Libraries wie jQuery, mooTools, ...)
      • index-file (öffentlicher Proxy zur Application-Proxy-Bootstrap)

Wichtig ist, dass du selbst (oder im Falle einer Teamarbeit das gesamte Team) mit der Strukturierung und der Verwendung klarkommst. Es nicht _DIE_ besten Herangehensweise, sondern einige. Und für jedes Vorhaben kann das unterschiedlich sein.

Ich empfehle dir lediglich vor einer konkreten Umsetzung genau zu überlegen, was die Anforderungen sind, und wie es sich am besten organisieren lässt. Effizienz ist nicht nur eine Sache des sichtbaren Outputs, sondern vor allem auch abhängig vom Weg, den du gehst. Was bringt dir eine perfekte Struktur, wenn du für die Vorüberlegung Jahre gebraucht hast? Andererseits wirft natürlich auch mangelnde Qualität auf Grund überstürzter Umsetzung die Frage auf, ob da etwas suboptimal gearbeitet wurde.
 
Zurück