Nach best practices für Symfony 3 steht, sollte es:Symfony-Projektstruktur - warum src/und app /?
app/config/
, speichert die gesamte Konfiguration für jede Umgebung definiert;app/Resources/
, speichert alle Vorlagen und die Übersetzungsdateien für die Anwendung;src/AppBundle/
, speichert den Symfony-spezifischen Code (Controller und Routen), Ihren Domänencode (z. B. Doctrine-Klassen) und all Ihre Geschäftslogik;- ...
tests/AppBundle/
speichert die automatischen Tests (z. B. Komponententests) der Anwendung.vendor/
, dies ist das Verzeichnis, in dem Composer die Abhängigkeiten der Anwendung installiert und Sie sollten nie irgendwelche seiner Inhalte ändern;web/
, speichert alle Front-Controller-Dateien und alle Web-Assets, wie Stylesheets, JavaScript-Dateien und Bilder.
Der Zweck bin
, var
, vendor
und web
Verzeichnisse liegt auf der Hand, aber ich frage mich, warum app
zu trennen, src
und tests
. Wie ich es verstehe, src
enthält Bündel, die die Anwendung machen. Daher würde ich erwarten, dass sie sich im Verzeichnis app
befinden. Auch das tests
Verzeichnis ist ein komplettes Geheimnis, wie es im Bündel sein sollte - src/AppBundle/Tests
. Von anderer Seite, warum sind Vorlagen (app/Resource/
) außerhalb des AppBundle?
Ich habe einige Hinweise zum Teilen von Bundles zwischen Anwendungen gefunden, aber da wir Composer haben, sind solche Bundles im Verzeichnis vendor
und sie haben separate Repositories. Ich verstehe jedoch, dass es nützlich sein kann, mehrere Bundles in der Anwendung ohne zusätzliche Infrastruktur zu haben, aber dann ist src
vollständig irreführender Name.
Also, was ist die Motivation hinter dieser Verzeichnisstruktur? Oder ist es nur historisches Erbe?
Wenn es keinen guten Grund gibt, nicht, ich denke, ich werde doppelte Verzeichnisse wie tests/AppBundle
und app/Resources
entfernen, wie sie auch in der AppBundle
sind.
Einige interessante liest: http://stackoverflow.com/questions/23993295/what-is-the-new-symfony-3-directory-structure http://stackoverflow.com/questions/7625960/understanding-architecture -und-ordner-struktur-in-symfony2 http://symfony.com/doc/current/quick_tour/the_architecture.html. Soweit ich weiß, gibt es 'app' für die Konfiguration und' tests', damit phpunit vom Projektstamm aus ausgeführt werden kann, ohne den Pfad der Konfigurationsdatei explizit angeben zu müssen. – Veve
Um phpunit zu starten, würde ich einen einheitlichen Einstiegspunkt erwarten, wie 'bin/command tests: run', anstatt mich auf die Standardkonfiguration eines beliebigen Werkzeugs zu verlassen (was, wenn ich etwas anderes/mehr zum Ausführen von Tests verwende?). –
Ich weiß nicht, wie ich auf Ihre Frage antworten soll ... Wie auch immer, 2 weitere interessante Themen über die Verzeichnisarchitektur: https://github.com/symfony/symfony/issues/12991 & https://github.com/ symfony/symfony-standard/issues/584: 'app' für config & templates,' src' für PHP-Quellcode. – Veve