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

PHP & Base de données Discussion :

die comme objet de retour?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 50
    Par défaut die comme objet de retour?
    Bonjour,

    J'utilise Php en jonction avec FlashBuilder, principalement pour des requêtes SQL. J'ai trouvé beaucoup d'exemples de scripts utilisant die comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... or die ("Connexion impossible à la base de données");
    Ce que je récupère avec Flash ce sont les résultats de mes requêtes, si elles ont fonctionné ou non. Peut-on récupérer et exploiter ces messages die? Quelle est leur lien avec l’échec d'une requête ou bien une valeur fournie par return?

    Merci pour vos éclaircissements!

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Cette forme est très mauvaise, il ne faut JAMAIS l'utiliser en production !
    Die est un alias de exit qui provoque l'arrêt du script et affiche la chaine passée en paramètre.

    C'est une très mauvaise pratique car elle ne permet pas de décider d'une action à effectuer en cas d'echec critique de l'application (comme par exemple renvoyer un code HTTP 500 ou rediriger vers une page quelconque).

    Je ne sais pas comment tu fais communiquer Flash et PHP mais je pense qu'une bonne pratique serait de prévoir une strucure d'échande de données (XML ou JSON sont de bons candidats) Dans tous les cas, en cas d'erreur, il faut renvoyer un token exploitable de l'autre coté.

    Exemple de ce que je fais quand je sers du JSON:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php if ($success) {
      echo json_encode($my_data);
    }
    else {
      echo json_encode(array('success' => false,  'error' => 'Une erreur inatendue est survenue', 'fichier' => 'index.php', 'ligne' => 42));
    }
    De cette façon, tu peux spécifier le contexte dans lequel tu as rencontré l'erreur et le message que reçoit l'appli tierce (dans mon cas c'est JS) est toujours formaté de la même manière (JSON). Je n'ai pas à comparer ce que j'ai obtenu avec des chaines de caractères.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 50
    Par défaut
    ok Benjamin!

    FlashBuilder 4.5 communique avec Php à travers un protocole binaire (AMF). Je n'ai pas à ma connaissance de méthode particulière pour renvoyer un contenu d'erreur custom comme tu le démontres. Quand ma requête ne fonctionne pas, Flash est directement notifié d'un message d'erreur et la raison de l'erreur est contenue dans cet évènement. Si ma requête réussie, alors je peux renvoyer à Flash un objet via return.

    Je supprime donc tous les die et gère l'exception directement dans Flash en fonction de la nature de l'erreur renvoyée par défaut!

    merci

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Encore une fois je ne connais pas Flash mais je pense qu'il est capable de comprendre les status HTTP. Donc je serais toi je ferais quelque chose dans ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    if (!mysql_open(...)) {
      header("HTTP/1.0 500 Internal Server Error");
      echo "Unable to connect to database...";
      exit(); // inutile de continuer mais on a servi les bons headers au moins et donc l'erreur est signalée
    }
    Sinon, tu peux aussi bien tout faire remonter en HTTP 200 (OK) en mettant un flag qui détermine si la requête est effectuée avec succès comme montré plus haut mais du coup il t'appartient de vérifier que la requête s'est bien déroulée, flash croira que c'est le cas à tous les coups.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 50
    Par défaut
    Je ne peux pas malheureusement perdre le profit de mon protocole binaire (rapidité, sécurité) pour envoyer mon contenu perso en HTTP. Mixer les 2 serait une vraie usine à gaz et je perdrais les outils de supervision dédiés intégrés à FlashBuilder.

    Mais reçu pour le principe!

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Ok je m'étais figuré que Flash faisait des appels HTTP à PHP mais si c'est du binaire il va falloir que tu créées ton propre mécanisme d'erreurs

Discussions similaires

  1. Question sur les fonctions avec "TABLE" comme param. de retour
    Par Alex01 dans le forum Développement
    Réponses: 2
    Dernier message: 17/11/2008, 09h26
  2. type String considéré comme objet
    Par new_wave dans le forum Langage
    Réponses: 1
    Dernier message: 04/11/2008, 17h25
  3. [Objet] Conseil retour de méthode
    Par charlene44 dans le forum Delphi
    Réponses: 10
    Dernier message: 06/03/2007, 09h57
  4. Web Methode ayant tab à 2 dimensions comme type de retour
    Par elouertassi dans le forum Services Web
    Réponses: 2
    Dernier message: 29/01/2007, 11h32
  5. Objet corba retour
    Par stephane92400 dans le forum CORBA
    Réponses: 8
    Dernier message: 09/06/2006, 11h50

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