[PHP] Signification de syntaxe php

Résolu/Fermé
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 - 7 juin 2012 à 17:29
 Utilisateur anonyme - 8 juin 2012 à 13:52
Bonjour,

Je suis en train de regarder le code d'un site web et je ne comprends pas cela.

$album->flags &= ~ALBUM_FLAG_ACTIVE;

&= ~ veut dire quoi concretement ?

Merci


A voir également:

6 réponses

djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 94
7 juin 2012 à 20:26
Et egalement celle ci :

$httpClient = &$this->_initHttpClient($config["encoder"]["start_url"]);

&$this pourquoi le & devant ?
0
Utilisateur anonyme
7 juin 2012 à 23:42
Bonjour

1 - Ce ~ est l'opérateur d'inversion logique bit à bit.
Si ALBUM_FLAG_ACTIVE vaut 4 par exemple (je vais raisonner sur des mots de 8 bits) ça s'écrit 0000 0100
donc ~ALBUM_FLAG_ACTIVE vaut 1111 1011 (ou 251=255-4)

Maintenant , &=
$machin &=TRUC, c'est une notation raccourcie pour $machin = $machin & TRUC.
L'opération &, c'est le ET bit à bit
Si on met toutes les opérations les unes à la suite des autres, ça donne (toujours pour ALBUM_FLAG_ACTIVE = 4) :
                ~ALBUM_FLAG_ACTIVE : 0000 0100
                ~ALBUM_FLAG_ACTIVE : 1111 1011
                     $album->flags : xxxx xxxx
$album->flags & ~ALBUM_FLAG_ACTIVE : xxxx x0xx

Le bilan de l'opération est de forcer à 0 certains bits de $album->flags sans modifier les autres. Le ou les bits forcés sont ceux qui étaient à 1 dans ALBUM_FLAG_ACTIVE.
Pour forcer ces mêmes bits à 1, on utilise un OU bit à bit (|) sans inverser ALBUM_FLAG_ACTIVE :
$album->flags |= ALBUM_FLAG_ACTIVE;
C'est une méthode très classique pour (entre autres) stocker plusieurs infos logiques dans une seule variable.
0
Utilisateur anonyme
7 juin 2012 à 23:56
2 -$httpClient = &$this->_initHttpClient($config["encoder"]["start_url"]);

N'oublie pas de lire le manuel PHP, c'est encore là qu'il y a les meilleures explications :
https://www.php.net/manual/fr/language.references.whatdo.php

Le & représente une référence. En pratique, ça veut dire que maintenant, $httpClient et $this->_initHttpClient($config["encoder"]["start_url"]) représentent la même chose. Tu n'as pas simplement recopié la valeur d'une variable dans une autre, elles sont devenues la même variable. Si tu modifies la valeur de $httpClient, ça va aussi modifier la valeur de $this->_initHttpClient($config["encoder"]["start_url"])
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 94
8 juin 2012 à 01:04
Ok je te remercies... Jamais utilisé cela dans mes anciens dév... Je sens que je vais devoir mettre la main à la patte !

Egalement et je n'ai pas trouvé de vrais "tutos" à ce sujet, as tu un lien intéressant qui détailles les "abréviations" possibles en php ?

Du genre " if ( A == B ) $vari = 'ok'; else $vari = 'nok'; " > $vari = (A == B) ? 'ok' : 'nok';

?

Merci à toi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
8 juin 2012 à 08:11
Bonjour

Pas besoin de tuto, il y a le manuel. Le chapitre sur la "référence du langage" n'est pas si long que ça,
https://www.php.net/manual/fr/langref.php
Si tu ne connaissais pas ces manières d'écrire (qui ne sont ni des abréviation, ni des astuces, simplement la syntaxe PHP) tu y apprendras plein de choses intéressantes. Et ça n'est pas grave si tu ne retiens pas tout par coeur : l'essentiel c'est que tu aies vu une fois que ça existait, quand tu en auras besoin ça te rappellera quelque chose et tu sauras où le retrouver.
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 94
8 juin 2012 à 13:43
Thanks !! Merci à toi pour les liens ;)
0
Utilisateur anonyme
8 juin 2012 à 13:52
De rien :)
0