Partage
  • Partager sur Facebook
  • Partager sur Twitter

Symfony 7 injecte un service dans un autre service

    15 février 2024 à 2:57:32

    Alors laissez-moi vous expliquer :

    J'ai une classe dateHandler avec laquelle je souhaite injecter une classe usersService mais la classe usersService injecte déjà dateHandler.

    Lorsque j'injecte la classe usersService dans la fonction construct, j'ai une boucle infinie et mon navigateur plante.

    Ma question est donc de savoir comment injecter usersService dans ma classe dateHandler sachant que dateHandler est déjà injecté dans usersService ?Voici ce que j'ai déjà fait.


    La class UsersService:

    <?php
    
    // src/Service/Users/Users.php
    namespace App\Service\Users;
    
    
    use App\Service\DateHandler;
    use App\Service\SettingsService;
    use Symfony\Component\HttpFoundation\RequestStack;
    
    
    class UsersService
    {
        public function __construct
                                    public DateHandler $dateHandler,
                                    public SettingsService $settingsService,
                                    public RequestStack $request,
                                    ){
        }
    }


    La class DateHandler:

    <?php
    
    // src/Service/DateHandler.php
    namespace App\Service;
    
    
    use App\Service\Users\UsersService;
    use App\Service\SettingsService;
    
    use Symfony\Contracts\Translation\TranslatorInterface;
    use Symfony\Component\HttpFoundation\RequestStack;
    
    class DateHandler
    {
        public function __construct(public UsersService $usersService,
                                    public SettingsService $settingsService,
                                    public TranslatorInterface $translator,
                                    public RequestStack $request,
                                   )
        {
    
        }
    
        /**
         * Convert timezone name to offset
         *
         * @param   string timezone (Europe/Paris) - REQUIRED
         * 
         * @return  string (offset: +02:00)
         */
        public function convertTimezoneToOffset(string $timezone): ?string
        {
            $time = new \DateTime('now', new \DateTimeZone($timezone));
            if ($time) {
                return $time->format('P');
            }
        }
    }




    -
    Edité par benf45100 15 février 2024 à 2:57:57

    • Partager sur Facebook
    • Partager sur Twitter
      15 février 2024 à 8:09:19

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Manque de Politesse

      Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?

      • Partager sur Facebook
      • Partager sur Twitter

      Pas d'aide concernant le code par MP, le forum est là pour ça :)

      Symfony 7 injecte un service dans un autre service

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      • Editeur
      • Markdown