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.