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 :

Syntaxe inconnue dans une application [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Par défaut Syntaxe inconnue dans une application
    Bonjour tout le monde,

    J'ai trouvé une syntaxe que je ne connait pas dans une appli :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function getDroits($attributDroit, $masque)
    {
    	return ($this->get($attributDroit) & $masque) != 0;
    }
    Je comprend bien qu'il s'agit d'une comparaison bit à bit des droits avec un masque, là dessus pas de problème. Ce qui m'interroge c'est le : "!= 0". Je suppose que ça signifie que l'on ne retourne le résultat que si il est différent de 0, mais je ne suis pas sûr. Mes questions : Est ce que ça signifie bien cela ?
    Est ce que cette syntaxe est correct ? Est-ce que c'est indispensable dans ce cas ?

    Merci

  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
    C'est ce qu'on appelle un opérateur de bit, dans ton cas c'est une opération AND. Il existe par ailleurs OR, XOR et NOR et les shifts.

    Toutes les infos sont dans le manuel, comme à chaque fois

    Le fait de faire != 0 se résume à vérifier de façon booléenne que le AND sur le bitfield par le masque n'est pas vide.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        00000011100 // bitfield
    AND 00000010000 // masque
    -----------------
        00000010000 // en base 10 ça fait 16 donc c'est bien différent de 0
     
        00000001100 // bitfield
    AND 00000010000 // masque
    -----------------
        00000000000 // en base 10 ça fait 0
    Et oui c'est indispensable car un résultat booléen est attendu (c'est d'ailleurs plus facile à exploiter qu'un int).

  3. #3
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Euh je pense pas que ça soit ça la question, mais plutot le "!=0" en dehors des parenthese.

    En gros pour un cadre général il serait possible d'écrire:

    ça me parait très étrange de voir un différent de zéro en dehors des parenthèse du return.

    bon ensuite j'ai peut-etre pas compris la réponse

    EDIT: après relecture, une tite question, ta réponse veut dire:

    reviens au même que:

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return ($a & $b != 0 ? $a & $b : Sinon quoi?);
    Sachant que je ne comprends pas ce que ça retourne dans ce cas la

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Par défaut
    Euh je pense pas que ça soit ça la question, mais plutot le "!=0" en dehors des parenthese.
    Merci skeud

  5. #5
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Et tu as vu ça ou? le retour de cette fonction donne quoi lorsque tu l'appelle?
    une valeur ou un true/false?

  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
    c'est juste, vu que l'opérateur bitwise est prioritaire sur l'opérateur booléen != tu peux enlever les parenthèses sans risque. Le fait qu'elles soient là ne change absolument rien au comportement.

  7. #7
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    En php les parenthese sur un return ne sont pas obligatoire?

    Edit: Effectivement elle ne le sont pas, et je viens de regarder:

    Notez que puisque return() est une structure de langage, et non une fonction, les parenthèses entourant les arguments ne sont pas nécessaires. Il est classique de les oublier et vous devriez le faire car PHP travaillera moins dans ce cas.
    Vous ne devriez jamais utiliser les parenthèses autour de la variable retournée lorsque vous la retournez pas référence, car cela ne fonctionnera pas. Vous ne pouvez retourner que les variables par référence, et non le résultat du traitement. Si vous utilisez return ($a);, alors vous ne retournez pas une variable mais le résultat de l'expression ($a) (qui est, bien sûr, la valeur de $a).
    ici: return php

    Alors je suis plus que surpris

    Edit2: pour répondre a ta question:

    reviens à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return (($a & $b) != 0);
    Donc à:

    d'après la doc

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/07/2004, 22h30
  2. Réponses: 8
    Dernier message: 17/03/2004, 14h40
  3. Licence MySql en tant que BD dans une application web
    Par Volta dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 26/02/2004, 14h38
  4. fenetre dos dans une application
    Par jfb53 dans le forum C++Builder
    Réponses: 3
    Dernier message: 19/10/2003, 18h06

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