IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

La meilleure pratique pour gerer les cas d'erreurs des services


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 72
    Points : 107
    Points
    107
    Par défaut La meilleure pratique pour gerer les cas d'erreurs des services
    Bonjour a tous !

    J'ai une petite question concernant les Best Practice Symfony voir même PHP en général.
    Quelle est la meilleure méthode de gêrer plusieurs cas d'erreur venant d'une méthode d'un service ?

    je m'explique un peu :
    Pour diminuer le code contenu dans mes controllers, j'ai généralement tout mon code metier dans des service dédiés à des tâches spécifique. Pour simplifier leur utilisation, j'ai généralement un découpage de methodes du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    public function init($parameters){
        $result = $this->initStuff1($arameters);
        $result = $this->initStuff2($arameters);
        $result = $this->initStuff3($arameters);
    ...
    }
     
    private function initStuff1(parameters){
    ...
    return $result;
    }
     
    private function initStuff2(parameters){
    ...
    return $result;
    }
     
    private function initStuff3(parameters){
    ...
    return $result;
    }
     
    ...
    Ok jusque là pas de soucis, ça me semble plutôt propre, simple, et ça fonctionne (j'ai simplifié l'exemple évidement et mes methodes ont des noms bien plus clairs).
    Le hic c'est que chaque methode initStuffX peu remonter une erreur différente (et je ne parle pas d'Exception, plutôt simplement d'erreurs "attendues") mais que forcement la methode initStuff(), elle, ne peu remonter qu'une seule erreur.
    Or, dans le contrôleur j'ai besoin de créer un flashbag different en fonction de l'erreur pour afficher sur le front.
    Du coup, si mes methodes initStufX retournent un simple booléen, impossible de savoir quelle a été l'erreur de traitement. Les exception ne me semble pas forcement appropriés non plus.

    Du coup quelle serait la meilleure pratique dans ce cas ?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    Bonjour,
    Cool man ,
    Ce que j'ai l'habitude de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
          $message = array(
                'outCode' => 0,
                'outMsg' => 'OK',
            );
       try {
        if (!is_dir(condtiion1)) {
                    throw new \Exception('message condition 1', 101);
                }
            if (!is_dir(condtiion2)) {
                    throw new \Exception('message condition 2 ', 102);
                }
       } catch (\Exception $ex) {
                $message['outCode'] = $ex->getCode();
                $message['outMsg'] = '['.$ex->getCode().'] '.$ex->getMessage();
            }
     return $message;

    si ton message n'est pas OK , c'est que ca marche pas .Dans ce cas le $message contient les détails du problème .

Discussions similaires

  1. Quelles sont les meilleures pratiques pour une démonstration en ligne?
    Par bbalet dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 25/02/2015, 14h07
  2. Meilleures pratique pour les droits d'accès
    Par Polakk6 dans le forum Sécurité
    Réponses: 3
    Dernier message: 26/12/2013, 18h11
  3. [OCILIB] OCI_FetchNext : Quel conseil pour tester les cas d'erreurs?
    Par cobfly dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 22/03/2011, 11h13
  4. Réponses: 5
    Dernier message: 25/05/2009, 14h59
  5. [Conception] Meilleures solutions pour gérer le multilangage
    Par scorpiwolf dans le forum Général Java
    Réponses: 3
    Dernier message: 06/07/2004, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo