Wenn ich von Skriptsprachen spreche spreche ich von Sprachen wie Python, Perl und (in meinem Fall) PHP. Nach der Verwendung von CodeIgniter, Zend und vielen anderen unterhaltsamen MVC-Systemen scheint es klar zu sein, dass eine Sache, auf die man sich einigen kann, die Ordnerstruktur ist (zusammen mit anderen Dingen, die so ähnlich sind). Das ist wirklich ein Problem für mich, weil ich keine gute Dokumentation über die Vorteile verschiedener Strukturdesigns finden kann. Die meisten Leute empfehlen nur eine, weil das ist, was sie verwenden ohne Rücksicht auf Verbesserungen im Design.Optimale Dateisystemstruktur für Skriptsprache MVC-Anwendungen
Eines der Dinge, die ich hoffe, dass wir uns einig sind, ist, dass das Überprüfen des Dateisystems auf vorhandene Dateien beim Autoloading von Klassen sehr schlecht ist. Unsere Klassen sollten sich nicht an einer von fünf möglichen Stellen befinden, was zu einer Flut von file_exists() Prüfungen für jede geladene Bibliothek führt.
Wie auch immer, ich versuche, Verzeichnisstrukturen zu sammeln, die ich vergleichen kann, die besten Praktiken zu finden, wenn für Anwendungen, die Planung:
- sind OOP basiert, welche höchstwahrscheinlich bedeutet MVC
- sind international in Rahmen und Unterstützung Sprachdateien/Übersetzungen
- sind offen für Module/Plugins, so dass komplette Pakete in unsere Codebasis fallen gelassen werden
- klar definieren, was los ist und wo sie suchen müssen für bestimmte Klassen
- Mögliche Unterstützung für mehrere Standorte aus der gleichen Struktur ausgeführt wird (siehe/site Verzeichnisse unten)
Also hier ist, was ich bisher haben. Denken Sie daran, dass libs nur ein Begriff ist, der Ihr Hauptbibliotheks-/Klassenverzeichnis bedeutet und je nach Ordnerstruktur sogar Modelle enthalten kann. Außerdem habe ich jegliche Art von statischem Inhalt (JS/CSS/Bilder) ausgeschlossen, da dieses Zeug wirklich ein Nachdenken ist und nicht mit unserem serverseitigen Code zusammenhängt - es könnte sogar auf einem anderen Server sein! Das Gleiche gilt für Caches, Datei-Uploads, lang und alle anderen generierten Inhalte.
/controllers
/views
/models
/libs
/config
index.php
Diese Art von erinnert mich an das Zend Framework, das alles in einem einzigen Ordner Libs häuft (die auch Unterordner enthält Dinge organisiert zu halten). Funktioniert nur für eine einzelne Site.
/libs
/site
/controllers
/views
/models
/config
index.php
Dies würde eine Multi-Site-Version der obigen Struktur.
/libs
/functions
/site
/controllers
/models
/views
/config
/site2
/controllers
/models
/views
/config
/modules
/user
/controllers
/models
/views
index.php
Dies würde Version, die mehrere Standorte und Drop in Module ermöglichen würde. Die Module wären eigenständige MVC-Apps wie ein Forum, das Geschäftslogik, CRUD und Ansichten beinhalten würde.
Also hat jemand eine perfekte Struktur sie könnten teilen oder führen Sie mich bei der Auswahl einer guten erweiterbaren Design?
Sieht aus wie die Zend Framework Skelettstruktur, ich bin auch ziemlich glücklich damit! Es erlaubt, die Struktur leicht auf Ihre Bedürfnisse zu erweitern. Dazu möchte ich/etc Verzeichnis hinzufügen, wo ich Projektumfang, Bäume, DB-Schema, etc. speichern ... –
Leider ist die Antwort mit den meisten Stimmen meine eigene. Ich bin also nicht besser dran als vorher ... Was ist damit? ; P – Xeoncross