formations:symfony_maj

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
formations:symfony_maj [01/06/2022 21:54] nbertformations:symfony_maj [01/06/2022 22:41] (Version actuelle) – [1. La partie Back-end] nbert
Ligne 4: Ligne 4:
  
 | **Date** | **Symfony** | **PHP** | **Composer** | **Node** | | **Date** | **Symfony** | **PHP** | **Composer** | **Node** |
-|:---:|:---:|:---:|:---:|:---:| 
 | Age de Rom - 2022 | 4.4 | 7.2 | 1 | 12 | | Age de Rom - 2022 | 4.4 | 7.2 | 1 | 12 |
 | 2022 - ? | 5.4 | 8 | 2 | 16 | | 2022 - ? | 5.4 | 8 | 2 | 16 |
  
 +<WRAP center round tip 60%>
 +Pensez à faire vos modifications sur cette branche au risque de casser tout le projet !
 +</WRAP>
 +
 +===== 1. La partie Back-end =====
 +
 +Commencer par supprimmer le fichier ''composer.lock'' ainsi que les dossiers ''vendor'' et ''var''.
 +
 +Vérifier que vous avez la bonne versions de PHP et Composer !
 +
 +L'idée est de mettre à jour tous les packages de composer pour qu'ils soient viables avec les nouvelles versions. Dans le ''composer.json'', tous les packages en ''symfony/nom_package: 4.4.*'' devront être en 5.4. Pour cela nous allons lancer la commande suivante : 
 +
 +    composer update "symfony/*"
 +    
 +Normalement tous les paquets se mettront à jour avec la LTS actuelle de Symfony.
 +
 +Suite à cela voici une liste des petits problèmes que nous avons rencontré, la liste sera à l'avenir complétée pour documenter notre travail :) :
 +==== doctrine_migrations.yaml ====
 +Il faut modifier le fichier ''config/packages/doctrine_migrations.yaml''. On passe de ça:
 +<code yaml>
 +doctrine_migrations:
 +    dir_name: '%kernel.project_dir%/src/Migrations'
 +    # namespace is arbitrary but should be different from App\Migrations
 +    # as migrations classes should NOT be autoloaded
 +    namespace: DoctrineMigrations
 +</code>
 +à ça:
 +<code yaml>
 +doctrine_migrations:
 +    migrations_paths:
 +        'DoctrineMigrations': '%kernel.project_dir%/src/Migrations'
 +    enable_profiler: '%kernel.debug%'
 +</code>
 +
 +==== Récupérer le repository lié à une classe ====
 +Avant:
 +<code php>
 +$data = $this->getDoctrine()->getRepository('App:MyEntity')->getData($id);
 +</code>
 +
 +Après:
 +<code php>
 +$data = $this->getDoctrine()->getRepository(MyEntity::class)->getData($id);
 +</code>
 +
 +==== Logout CAS ====
 +On a eu besoin d'ajouter une route de logout.
 +<code php>
 +/**
 + * @Route("/logout", name="logout")
 + */
 +public function logoutAction(ParameterBagInterface $param) {
 +    if (($param->get('cas_logout_target') !== null) && (!empty($param->get('cas_logout_target')))) {
 +        \phpCAS::logoutWithRedirectService($param->get('cas_logout_target'));
 +    } else {
 +        \phpCAS::logout();
 +    }
 +}
 +</code>
 +
 +==== UserInterface ====
 +Attention, si votre classe User implémente UserInterface alors la méthode ''getUsername'' est nécessaire. (même si vous ne nous en servez pas)
 +
 +==== ManagerRegistry ====
 +Avant:
 +<code php>
 +use Doctrine\Common\Persistence\ManagerRegistry;
 +</code>
 +
 +Après:
 +<code php>
 +use Doctrine\Persistence\ManagerRegistry;
 +</code>
 +
 +==== Listener (CASListener dans notre cas) ====
 +[[https://stackoverflow.com/questions/56438177/deprecated-the-listenerinterface-turn-your-listeners-into-callables-instead]]
 +
 +Avant:
 +<code php>
 +use Symfony\Component\HttpKernel\Event\GetResponseEvent;
 +use Symfony\Component\Security\Http\Firewall\ListenerInterface;
 +
 +class CasListener implements ListenerInterface {
 +    public function handle(GetResponseEvent $event) {
 +        ...
 +    }
 +    
 +    public function checkHandleLogout(GetResponseEvent $event) {
 +        ...
 +    }
 +}
 +</code>
 +
 +Après:
 +<code php>
 +use Symfony\Component\HttpKernel\Event\RequestEvent;
 +
 +class CasListener {
 +    public function __invoke(RequestEvent $event) {
 +        ...
 +    }
 +    
 +    public function checkHandleLogout(RequestEvent $event) {
 +        ...
 +    }
 +}
 +</code>
 +
 +==== PHPUnit ====
 +A rajouter dans le ''.gitignore'' Pour éviter les dingueries:
 +<code>
 +###> phpunit/phpunit ###
 +/phpunit.xml
 +.phpunit.result.cache
 +###< phpunit/phpunit ###
 +</code>
 +
 +===== 2. La partie Front-end =====
 +
 +Commencez par supprimer le fichier ''package-lock.json'' et le dossier ''node_modules''.
 +
 +Vérifier que vous avez la bonne version de Node. //(nvm tout ça tmtc)//😎
 +
 +Lancer un gros ''npm update'' sa mère et corriger les éventuels bugs qui pourrait apparaitre.
 +
 +Attention à ne pas utiliser des versions trop récentes si certains packages ont des dépendances trop anciennes (mercé AdminBSB)
  • formations/symfony_maj.1654113291.txt.gz
  • Dernière modification : 01/06/2022 21:54
  • de nbert