Ich habe gerade ein neues Symfony 2.5-Projekt mit einem regulären Composer-Befehl erstellt:
php composer.phar create-project symfony/framework-standard-edition path/ 2.5.0
Das Terminal fragt mich:
Möchten Sie die Symfony 3-Verzeichnisstruktur verwenden?
Was ist diese Symfony 3-Verzeichnisstruktur? Ich habe es noch nie gesehen ... Ist es seit 2.5 neu?
Was sind die Vorteile der Verwendung?
Gibt es eine Möglichkeit, diese Verzeichnisstruktur zu replizieren?
Antworten:
Ich möchte die neue Symfony 3-Verzeichnisstruktur verwenden, sehe aber die Frage nicht?
Die Frage
Would you like to use Symfony 3 directory structure?
wurde beim Erstellen eines neuen Projekts aufgrund der dadurch verursachten Verwirrung entfernt. Sie können die Verwendung der Verzeichnisstruktur folgendermaßen erzwingen:Wenn Sie die neue Struktur bevorzugen, können Sie die Umgebungsvariable
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE
zu Ihrer.bashrc
oder einer.bash_profile
ähnlichen hinzufügen :Lassen Sie alle zukünftigen Projekte nach der neuen Struktur fragen
Lassen Sie NUR DIESES Projekt fragen, ob wir die neue Struktur verwenden möchten.
Wenn Sie es nur für ein bestimmtes Projekt (einmalig) wollten, können Sie Folgendes verwenden:
Wenn die Umgebungsvariable
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE
festgelegt und festgelegt isttrue
,composer
werden Sie gefragt, ob Sie die neue Verzeichnisstruktur verwenden möchten.Lesen Sie weiter unten alle Änderungen zwischen der Verzeichnisstruktur
Symfony2
undSymfony3
.Was ist die neue Symfony 3-Verzeichnisstruktur?
(und wie wirkt es sich auf mich und meinen Workflow aus)
Ich habe dies untersucht, indem ich zwei Projekte erstellt habe, eines mit
symfony-2.5.0
Verzeichnisstruktur und eines mitsymfony-3
(nur Änderung der Verzeichnisstruktur).Machen Sie eines von jedem Projekt:
Jetzt haben wir also die 2 verschiedenen Verzeichnisse, die wir vergleichen möchten.
Finde die
diff
ErenceSie können
diff
zwischen den beiden Verzeichnissen wechseln, indem Sie:Dies zeigt die Dateien, die sich in den beiden Versionen unterscheiden.
Aufschlüsselung von
diff
Hier ist eine Aufschlüsselung von allem im Diff.
Vorteile der Symfony 3-Verzeichnisstruktur
Die neue Verzeichnisstruktur bietet eine Reihe von Vorteilen, die alle geringfügig sind und möglicherweise nur minimale Änderungen an Ihrem Workflow erfordern.
PHPUnit
phpunit
kann vom Projektstamm aus ausgeführt werden, ohne den Pfad der Konfigurationsdatei explizit angeben zu müssen.Binäre ausführbare Dateien
Alle ausführbaren Binärdateien befinden sich jetzt alle an einem einzigen Speicherort - dem
bin
Verzeichnis (ähnlich einem Unix-ähnlichen Betriebssystem) .Das neue
/var
VerzeichnisDas neue
/var
Verzeichnis enthält die Dateien, in die das System während des Betriebs Daten schreibt (ähnlich einem Unix-ähnlichen Betriebssystem ) .Dies erleichtert auch das Hinzufügen von Berechtigungen. Das gesamte
/var
Verzeichnis sollte von Ihrem Webserver beschreibbar sein. Sie können dem Symfony2-Handbuch zum Festlegen von Berechtigungen folgen (Ersetzen vonapp/cache
&&app/logs
durchvar
). Alle anderen Dateien, die Sie lokal schreiben möchten, befinden sich möglicherweise auch hier.Überprüfung der Symfony-Anforderungen
Beim Ausführen
symfony_requirements
werden obligatorische und optionale Umgebungskonfigurationen ausgegeben.z.B:
Fazit
Sieht nach einer guten Aufräumaktion von Sensio Labs aus. Alle oben genannten Änderungen sind absolut sinnvoll. Sie sollten beim Upgrade von
2.5
auf einfach zu implementieren sein.3.x
Dies sind wahrscheinlich die geringsten Probleme!Lesen Sie die Dokumente
Symfony 2.x => 3.0 Aktualisieren Sie die Dokumente hier.
Symfony 3.0 Die Architektur
Veröffentlichungsdatum für Symfony 3
Es sieht weit entfernt aus, den Release-Prozess zu betrachten (eine Lektüre wert) :
http://symfony.com/doc/current/contributing/community/releases.html
(Quelle: symfony.com )
quelle
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true
( siehe oben in meiner Antwort für weitere Details)Hier ist eine Liste der Änderungen zwischen der alten und der neuen Verzeichnisstruktur:
var
Ordner wird eingeführtapp/console
wird verschoben nachbin/console
app/check.php
wird verschoben / umbenannt inbin/symfony_requirements
app/phpunit.xml.dist
wird in den Stammordner verschobenapp/SymfonyRequirements.php
wird verschoben nachvar/SymfonyRequirements.php
app/cache
undapp/logs
Ordner verschoben wurden zuvar/cache
undvar/logs
jeweils(Derzeit scheinen nicht alle alten Dateien entfernt zu sein. Sie können dies daher manuell tun, bevor Sie alle Dateien in die Versionskontrolle übernehmen. Siehe dieses Problem. )
Was ist der Vorteil?
Diese Änderungen bieten einige Vorteile. Zunächst befinden sich jetzt alle Dateien und Ordner im Ordner, die für Symfony beschreibbar sein sollten
var
. Dies sollte die Konfiguration von Berechtigungen erheblich vereinfachen: Stellen Sie einfach den Schreibzugriff auf denvar
Ordner sicher, und Sie sind fertig. Dies wird in diesem Blog-Beitrag vorgeschlagen - ich habe es selbst noch nicht versucht.Zweitens
console
befinden sich jetzt alle ausführbaren Dateien, einschließlichbin
. So können Bash-Benutzer dies beispielsweise zu ihrer.profile
Datei hinzufügen :Jetzt müssen Sie nicht einmal mehr tippen
bin/console
, es reicht einfachconsole
aus (beachten Sie, dass ich neu starten musste, damit dies funktioniert).Es gibt noch einige andere Verbesserungen.
app/check.php
ist jetzt eine ausführbare Datei, sodass Sie sie mitbin/symfony_requirements
anstelle von aufrufen könnenphp app/check.php
. (Mit dem.profile
zuvor beschriebenen Trick wird auch einfachsymfony_requirements
ausreichen)Und zu guter Letzt müssen Sie beim Ausführen von PHPUnit nicht mehr den Speicherort der Konfigurationsdatei angeben. Also statt
phpunit -c app
Sie können einfach ausführenphpunit
.Kann ich auch vorhandene Projekte auf diese neue Struktur aktualisieren?
Standardmäßig wird beim Erstellen eines neuen Projekts (mit
composer create-project symfony/framework-standard-edition path/ "2.5.*"
) nur die Frage "Möchten Sie die neue Verzeichnisstruktur verwenden?" Angezeigt .Es ist zwar möglich, eine vorhandene Symfony-Anwendung zu aktualisieren, dies ist jedoch eine etwas hackige Lösung. Ich habe es jetzt mit einer Reihe von Anwendungen geschafft, und Sie können die Schritte in dieser Übersicht lesen . Da es jedoch nicht dafür entwickelt wurde, kann ich nicht garantieren, dass es immer funktioniert.
Aktualisieren
Es stellt sich heraus, dass Symfony Sie beim Erstellen einer neuen Symfony-Anwendung über Composer nicht mehr fragt, ob Sie die neue Verzeichnisstruktur verwenden möchten. Es ist jedoch weiterhin möglich, Symfony-Projekte mit der neuen Verzeichnisstruktur mithilfe einer Umgebungsvariablen zu erstellen. Weitere Informationen finden Sie unter Wie kann ich ein neues Symfony-Projekt mit der neuen Verzeichnisstruktur erstellen?
quelle
.profile
Datei nicht neu starten. Sie können die Datei in Ihrer aktuellen Shell einfach neu beziehen oder eine neue Shell beenden und starten. Durch Ausführen. ~/.profile
wird die Datei erneut als Quelle bereitgestellt (beachten Sie den führenden Punktbereich).