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

Langage PHP Discussion :

[PHP5] Pb d'utilisation de "or" et throw new Exceptions()


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 8
    Par défaut [PHP5] Pb d'utilisation de "or" et throw new Exceptions()
    Bonjour,

    je suis débutant en php et en programmation en général, je m'aide beaucoup de vos tutos mais j'ai un probleme pour appliquer ce que l'on dit ici :
    faq_php_erreurs

    voici à peu près comment j'essaie de l'utiliser:

    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
    26
    27
    <?php
     
    $newGestion_systeme=new Gestion_systeme();
     
    try
    {
    if (!empty($_POST)) { 
     
    if (isset($_POST['videCache'])) {
    	$newGestion_systeme->videCache() or throw new Exception('Impossible de vider le cache.');
    	}
     
    elseif (isset($_POST['stopSquid'])) {   
    	$newGestion_systeme->stopSquid() or throw new Exception('Impossible d\'arreter Squid.');
    	}
     
    else {
    	$newGestion_systeme->statutSquid() or throw new Exception('Impossible d\'afficher le statut de Squid.');
    	}
    }
    }
     
     catch(Exception $myException)
    {
    	echo 'Erreur : '.$myException->getMessage();
    }
    ?>
    Est ce que j'ai le droit de faire ça ???
    cela me renvoie une l'erreur suivante:
    Parse error: parse error, unexpected T_THROW in ...

    Voila, merci d'avance

  2. #2
    Membre chevronné Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Par défaut
    throw est un opérateur donc je pense que cette syntaxe "or throw" n'est pas valide en php (ce que semble confirmer ton message d'erreur). J'ai pas de quoi tester là, en tout cas je n'ai jamais vue cette syntaxe en php. Peut être que le code de la faq est tout simplement erroné ; )

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    En tout cas cela ne fonctionne pas sur php 5.2.0... La faq est peut être erronée..

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Y a-t-il un moyen de contacter l'auteur de l'article pour qu'il nous éclaire ?

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    L'erreur a été signalée, merci

    En attendant, la syntaxe alterative pour l'algo "action or action" est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $resource = mysql_connect('host', 'login', 'password');
    if(empty($resource))
    {
       throw new Exception('Impossible de se connecter à MySQL');
    }

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    Bonjour

    Je suis l'auteur de cette partie de la FAQ et effectivement, le code est faux, le "or" ne s'applique pas ici.
    Je suis désolé, j'ai dû écrire ça un peu naturellement sans retester avant publication.
    La syntaxe correcte est donc

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?php
     
    $newGestion_systeme=new Gestion_systeme();
     
    try
    {
    if (!empty($_POST)) { 
     
    if (isset($_POST['videCache'])) {
        if ( ! $newGestion_systeme->videCache() ) {
             throw new Exception('Impossible de vider le cache.');
        }
    }
     
    elseif (isset($_POST['stopSquid'])) {   
        if ( ! $newGestion_systeme->stopSquid() ) {
            throw new Exception('Impossible d\'arreter Squid.');
        }
    }
     
    else {
        if ( ! $newGestion_systeme->statutSquid() ) {
            throw new Exception('Impossible d\'afficher le statut de Squid.');
        }
    }
     
    }
    }
     
     catch(Exception $myException)
    {
        echo 'Erreur : '.$myException->getMessage();
    }
    ?>
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut


    Si je puis me permettre une suggestion au passage : essaie de faire la distinction entre les objets et les classes. À part dans certains cas rares et bien définis, une classe et un objet ne peuvent avoir le même nom car leur finalité n'est pas la même.

    Une classe est un ensemble, tandis qu'un objet est un exemple concret de cet ensemble.
    • Chien -> Médor, Milou, Lassie, etc.
    • Membre -> Mijback, Yogui, wamania, etc.
    • GestionSysteme -> Index, Administration, Connexion, etc.
    Je suis sûr que nous avons de très bon cours qui en parlent également

  8. #8
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par wamania
    Bonjour

    Je suis l'auteur de cette partie de la FAQ et effectivement, le code est faux, le "or" ne s'applique pas ici.
    Je suis désolé, j'ai dû écrire ça un peu naturellement sans retester avant publication.
    Shit happens.

    Merci pour cette contribution, je ne savais pas que php gérait les exceptions avant de tomber sur ta FAQ.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/11/2006, 18h00

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