Je viens de créer un nouveau projet Symfony 2.5 avec une commande de composition classique:
php composer.phar create-project symfony/framework-standard-edition path/ 2.5.0
Le Terminal me demande:
Souhaitez-vous utiliser la structure de répertoires Symfony 3?
Quelle est cette structure de répertoires Symfony 3? Je ne l'ai jamais vu auparavant ... Est-ce nouveau depuis 2.5?
Quels sont les avantages à l'utiliser?
Existe-t-il un moyen de répliquer cette structure de répertoires?
Réponses:
Je souhaite utiliser la nouvelle structure de répertoires Symfony 3, mais je ne vois pas la question?
La question
Would you like to use Symfony 3 directory structure?
a été supprimée lors de la création d'un nouveau projet en raison de la confusion qu'elle provoquait. Vous pouvez forcer l'utilisation de la structure de répertoires en utilisant ce qui suit:Si vous préférez la nouvelle structure, vous pouvez ajouter la variable d'environnement
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE
à votre.bashrc
ou.bash_profile
similaire:Faire en sorte que tous les futurs projets demandent la nouvelle structure
Demandez SEULEMENT CE projet si nous voulons utiliser la nouvelle structure.
Si vous le vouliez pour un projet particulier uniquement (un seul), vous pouvez utiliser:
Si la variable d'environnement
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE
est définie et définie surtrue
,composer
vous demandera si vous souhaitez utiliser la nouvelle structure de répertoires.Continuez à lire ci-dessous pour tous les changements entre la structure de répertoires
Symfony2
etSymfony3
.Quelle est la nouvelle structure de répertoires Symfony 3?
(et comment cela m'affecte et mon flux de travail)
J'ai examiné cela en créant 2 projets, un avec une
symfony-2.5.0
structure de répertoire, un avecsymfony-3
(changement de structure de répertoire uniquement).Faites un de chaque projet:
Nous avons donc maintenant les 2 répertoires différents que nous voulons comparer.
Trouvez l'
diff
érenceVous pouvez
diff
entre les 2 répertoires en utilisant:Cela montre les fichiers qui diffèrent dans les 2 versions.
Panne de
diff
Voici une ventilation de tout dans le diff.
Avantages de la structure de répertoires Symfony 3
La nouvelle structure de répertoires présente un certain nombre d'avantages, qui sont tous mineurs et peuvent nécessiter des modifications minimes de votre flux de travail.
PHPUnit
phpunit
peut être exécuté à partir de la racine du projet sans avoir à spécifier explicitement le chemin du fichier de configuration.Exécutables binaires
Tous les fichiers exécutables binaires sont désormais tous situés dans un seul emplacement - le
bin
répertoire (similaire à un système d'exploitation de type Unix) .Le nouveau
/var
répertoireLe nouveau
/var
répertoire contient les fichiers dans lesquels le système écrit des données au cours de son fonctionnement (similaire à un système d'exploitation de type Unix) .Cela facilite également l'ajout d'autorisations, le
/var
répertoire entier doit être accessible en écriture par votre serveur Web. Vous pouvez suivre le guide Symfony2 pour définir les autorisations (en remplaçantapp/cache
&&app/logs
parvar
), tous les autres fichiers que vous souhaitez écrire localement peuvent également se trouver ici.Vérification des exigences Symfony
L'exécution
symfony_requirements
produira des configurations d'environnement obligatoires et facultatives.par exemple:
Conclusion
Cela semble être un bon rangement par Sensio Labs, tous les changements ci-dessus ont un sens parfait, ils devraient être faciles à mettre en œuvre lors de la mise à niveau de
2.5
vers3.x
, ce seront probablement le moindre de vos problèmes!Lire la documentation
Symfony 2.x => 3.0 Mise à jour de la documentation ici
Symfony 3.0 L'architecture
Date de sortie de Symfony 3
Il semble loin de regarder le processus de publication (qui vaut la peine d'être lu) :
http://symfony.com/doc/current/contributing/community/releases.html
(source: symfony.com )
la source
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true
(voir le haut de ma réponse pour plus de détails)Voici une liste des changements entre l'ancienne et la nouvelle structure de répertoires:
var
dossier est introduitapp/console
est déplacé versbin/console
app/check.php
est déplacé / renommé enbin/symfony_requirements
app/phpunit.xml.dist
est déplacé vers le dossier racineapp/SymfonyRequirements.php
est déplacé versvar/SymfonyRequirements.php
app/cache
etapp/logs
ont été déplacés versvar/cache
etvar/logs
, respectivement(Actuellement, tous les anciens fichiers ne semblent pas être supprimés, vous pouvez donc le faire manuellement avant de valider tous les fichiers dans le contrôle de version. Consultez ce problème )
Alors quel est l'avantage?
Ces changements présentent quelques avantages. Tout d'abord, tous les fichiers et dossiers qui devraient être accessibles en écriture pour Symfony se trouvent maintenant dans le
var
dossier. Cela devrait rendre la configuration des autorisations beaucoup plus facile: assurez simplement l'accès en écriture auvar
dossier et vous avez terminé. Ceci est suggéré dans ce billet de blog - je n'ai pas encore essayé cela moi-même.Deuxièmement, tous les exécutables, y compris
console
, se trouvent maintenant dans lebin
dossier. Cela permet aux utilisateurs de Bash par exemple d'ajouter ceci à leur.profile
fichier:Maintenant, vous n'avez même plus besoin de taper
bin/console
,console
cela suffira simplement (notez que j'ai dû redémarrer pour que cela fonctionne).Il y a également d'autres améliorations.
app/check.php
est maintenant un exécutable, vous pouvez donc l'appeler en utilisantbin/symfony_requirements
au lieu dephp app/check.php
. (En utilisant l'.profile
astuce que j'ai décrite précédemment,symfony_requirements
cela suffira également)Et, last but not least, vous n'avez plus à spécifier l'emplacement du fichier de configuration lors de l'exécution de PHPUnit. Donc au lieu de
phpunit -c app
vous pouvez simplement exécuterphpunit
.Puis-je également mettre à niveau des projets existants vers cette nouvelle structure?
Par défaut, vous n'obtiendrez que la question «Voulez-vous utiliser la nouvelle structure de répertoire» lors de la création d'un nouveau projet (en utilisant
composer create-project symfony/framework-standard-edition path/ "2.5.*"
).Cependant, il est possible de mettre à niveau une application Symfony existante, mais c'est une solution quelque peu piratée. J'ai réussi à le faire avec un certain nombre d'applications maintenant, et vous pouvez lire les étapes dans cet essentiel . Cependant, comme il n'a pas été conçu pour cela, je ne peux pas garantir que cela fonctionnera toujours.
Mettre à jour
Il s'avère que Symfony ne vous demande plus si vous souhaitez utiliser la nouvelle structure de répertoires, lors de la création d'une nouvelle application Symfony via Composer. Cependant, il est toujours possible de créer des projets Symfony avec la nouvelle structure de répertoires, en utilisant une variable d'environnement. Pour plus d'informations, consultez Comment créer un nouveau projet Symfony avec la nouvelle structure de répertoires?
la source
.profile
, vous pouvez simplement ressourcer le fichier dans votre shell actuel, ou quitter et démarrer un nouveau shell. En cours d'exécution. ~/.profile
, le fichier sera ré-source (notez le point-espace).