Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony] Migration vers Symfony 4.* depuis 2.*

Sujet résolu
    15 juillet 2019 à 17:11:23

    Bonjour,

    Voila le sujet est dans le titre, je souhaite migrer mon projet Symfony qui est actuellement en 2.6.13 vers la version 4.3 de symfony et je viens solliciter la communauté car je ne comprend pas certaines choses. 

    Tout d'abord si vous avez des documentations autre que celle fourni par sensiolabs je suis preneur (actuellement en train de me documenter dessus) mais même dans la doc de sensiolabs certains truc restent flou comme le fait qu'il faut dans un premier temps régler les dépréciations (OK ça je comprend mais c'est dit que ça liste les dépréciations pour les futures version de Symfony mais la version 2.6.13 prévoit t-elle aussi pour la version 4.3 ou faut-il passer par une version intermédiaire ?) De plus je comprend pas le fait que dans Symfony 4.3 la notion de 'bundle' n'existe plus ?? ou j'ai peut-être mal compris. Enfin voila je suit les étapes et actuellement je règle du mieux possible toutes les dépréciations de mon projet actuellement sur ce tuto : https://symfony.com/doc/current/setup/upgrade_major.html#upgrade-major-symfony-after mais ce tuto est pour passer une version 3.4 vers 4 d'ou ma question précédente concernant si il faut une étape intermédiaire.

    • Partager sur Facebook
    • Partager sur Twitter
      15 juillet 2019 à 19:52:35

      Salut !

      Si jamais, tu as le sélecteur de version de Symfony sur pratiquement chaque page de la documentation. Si Symfony 2 n'est plus supporté, la documentation est toujours disponible. Or, si tu choisis la version 2.8 de la documentation, tu as les informations qui te manqueraient.

      Les dépréciations sont à régler au passage de chaque version majeure, et tu ne devrais pas sauter directement de 2 à 4, il faudra passer par la 3 entre deux. D'ailleurs, il te faudrait passer à la 2.8, régler les dépréciations pour que le passage à la 3.0 puisse fonctionner (ce qui était déprécié dans Symfony 2 a été enlevé de la 3), puis régler les éventuels soucis (dépendances surtout) pour pouvoir passer à la 3.4, refaire la même chose avant de passer à la 4.0, …

      S'il n'y avait que Symfony et pas de dépendances, la migration pourrait être assez simple et probablement qu'il serait possible de faire le saut d'une version 2 à une version 4.3 directement, puis régler les différents points en regardant les fichiers UPGRADE fournis. Le plus ennuyeux est que les dépendances ont leur vie à côté, et que rien ne garantit qu'elles ont encore une version compatible avec Symfony 4…

      Pour ce qui est des bundles, oui, cela n'est plus vraiment mis en avant avec Symfony 4. Cela est dû au fait qu'il est relativement rare de réutiliser du code dans une autre application, à moins qu'on ne code que des dépendances. Incidemment, ce n'est pas plus mal, vu qu'on peut utiliser les espaces de nom pour regrouper certaines fonctionnalités du code si besoin.

      • Partager sur Facebook
      • Partager sur Twitter
        16 juillet 2019 à 9:25:58

        Bonjour Ymox merci de tes éclaircissement.

        J'aimerai savoir tout de même, vu que je doit migrer un gros projet d'au moins 20 Bundles si je comprend bien faudra que je regroupe tous les controller au même endroit tous les entité au même endroit etc ??? en gros ils seront tous dans des fichier portant le nom de mes Bundle actuel mais tous dans le même fichier ex : 

        Si je comprend bien :

        - le bin c'est le nouvel emplacement de la console.

        - packages dans config c'est les fonctionnalité qui était intégré de base a symfony avant mais qui va devoir être mis à la main (ou avec symfony flex)

        - bootstrap.php comporte les style css de bootstrap

        - bundle c'est la déclaration des différents bundle qu'on utilise (la je suis pas sur du tout)

        - route et service ça change pas c'est pour diriger vers les différents bundles

        - public vendor change pas (web devient public)

        - var c'est pour la variable d'environnement

        - enfin src ou on va mettre controller entité form etc et ou on va déclarer dedans chaque bundle pour y mettre toutes les entités, form etc ??

        Par ailleurs si je comprend bien du coup les namespace maintenant c'est celui que j'ai mis dans le petit bout de code et les route du bundle ce font dans le controller en question ?

        Merci pour tes réponses et désolé si j'en demande trop, je suis en charge de la migration de symfony dans mon stage et je veux pas faire n'importe quoi.

        • Partager sur Facebook
        • Partager sur Twitter
          16 juillet 2019 à 11:11:02

          Bonjour,

          +1 Ymox

          Pour être passé de 2 à 3 puis actuellement à 4, il y a un sacré boulot pour faire le saut 2 à 4 car la structure est différente, la gestion des css, js, etc aussi, les dépréciations, ... et si tu as des bundles de la communauté rien ne prouve qu'il fonctionne encore version 4 voire est-ce bien utile de les utiliser compte-tenu des fonctionnalités intégrées dans Symfony (cas de FosUser par exemple).

          Donc il me semble qu'il faut refaire un projet totalement nouveau pour déjà adopter la structure d'une 4, les fichiers de configuration, etc et non prendre un clone du projet en version 2.x et chercher à migrer le code d'origine.

          A+

          • Partager sur Facebook
          • Partager sur Twitter
            16 juillet 2019 à 12:00:16

            Je pense que moi et mon responsable on va créer le projet et ensuite intégrer les fichiers de code petit a petit (mais pour faire ça il faudra régler les dépréciations avant). on installera les packages dont on a besoin et on réglera les quelques erreur du au dépréciations non corrigé si jamais il y en a qui passe a travers le filet
            • Partager sur Facebook
            • Partager sur Twitter
              16 juillet 2019 à 13:10:00

              Oui c'est une possibilité mais l'intégration des fichiers nécessitera du refactoring ... déjà sur les namespaces ce qui est le plus facile si la structure est bien définie.

              L'usage de webpack pour les js et les css change la donne.

              Ensuite au-delà de Symfony, il y a la version de php à prendre en compte ... avec SF4 c'est du php 7.x alors qu'avec une 2 ce devrait être un 5.6 ...

              Bref c'est du boulot. 

              A+

              • Partager sur Facebook
              • Partager sur Twitter
                16 juillet 2019 à 14:26:45

                tu me conseillerais autre chose ?
                • Partager sur Facebook
                • Partager sur Twitter
                  17 juillet 2019 à 4:40:20

                  Il faudrait connaître le projet pour se prononcer sur la démarche.

                  Si tu procèdes en partant d'un squelette de type 4 et intègre le code petit à petit tu régleras les dépréciations au fur et à mesure puisque ton code ne fonctionnera pas directement. Donc régler les dépréciations avant, je ne sais si cela vaut le coup.

                  L'autre méthode est de partir from scratch et de voir les possibilités qu'offre la 4 suivant les fonctionnalités à mettre en oeuvre. La reprise de partie de code est sans doute possible.

                  A+

                  -
                  Edité par monkey3d 17 juillet 2019 à 4:40:58

                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 juillet 2019 à 14:50:46

                    C'est pas pour la reprise du code que j'ai peur mais plus pour l'update des dépendances, J'ai chercher un peu pour savoir si toutes les dépendances était compatible mais certains sont spécifique à Symfony 2 (mais sont quand même géré dans symfony 4) tu me conseille quoi au niveau des dépendances ? copier coller le contenu de composer.json et faire un composer update ? (j'ai peur qu'il ne mette pas à jour les dépendances et qu'il prenne les dépendances dans le composer.json)

                    -
                    Edité par Sheilune 18 juillet 2019 à 15:05:36

                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 juillet 2019 à 18:24:43

                      Tu parles de quelles dépendances ?

                      Moi je travaille (à titre perso) avec l'atelier Eclipse et j'ajoute les dépendances (je parle des composants Symfony voire des bundles de la communauté) une à une.

                      Quand je veux intégrer une dépendance, je regarde donc si c'est compatible avec ce qui existe déjà. Si une dépendance n'est pas compatible, je le vois de suite.

                      Ensuite je fais un update avec le nouveau composant ajouté au projet.

                      Eclipse gère lui-même le composer.json et je ne travaille pas directement sur le composer.json.

                      A+

                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 juillet 2019 à 11:31:59

                        Salut, enfaîte nous on à un composer.json que l'on écrivait à la main pour spécifier les version des bundles que l'on voulait installer, si ce composer.json je le copie et colle dans symfony 4 puis que je fait un composer update, il va mettre les dépendances a jour pour symfony 4 ? et si non il va afficher quel dépendance ne peux être mis a jour non ?

                        Merci d'avance pour votre patience et vos réponses

                        • Partager sur Facebook
                        • Partager sur Twitter

                        [Symfony] Migration vers Symfony 4.* depuis 2.*

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown