2017-01-20 3 views
0

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.

+0

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

+0

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?). –

+1

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

Antwort

1

Dank der Links in den Kommentaren sieht es aus wie app/Resources und tests/ Verzeichnisse sind nur ein historisches Erbe. Da alles in Symfony ein Bündel ist, sind diese Verzeichnisse auch im AppBundle, also kann ich die Duplikate fallen lassen. Die app/ ist hier nur zum Bootstrap der AppBundle und enthalten Sachen, die nicht zu einem Bundle passen.

+0

auch Sie können dort einige wiederverwendbare Bundles Elemente wie Vorlagen für fos Benutzer Bundle zum Beispiel überschreiben – LPodolski