[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
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
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:
- [PHP] Signification de syntaxe php
- Easy php - Télécharger - Divers Web & Internet
- Livre catégorie 8 signification ✓ - Forum Loisirs / Divertissements
- Signification smiley :3 ✓ - Forum Mail
- Prv signification instagram - Forum Mobile
- (Y) emoji signification ✓ - Forum Mail
6 réponses
djflexlive
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
95
7 juin 2012 à 20:26
7 juin 2012 à 20:26
Et egalement celle ci :
$httpClient = &$this->_initHttpClient($config["encoder"]["start_url"]);
&$this pourquoi le & devant ?
$httpClient = &$this->_initHttpClient($config["encoder"]["start_url"]);
&$this pourquoi le & devant ?
Utilisateur anonyme
7 juin 2012 à 23:42
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) :
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.
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.
Utilisateur anonyme
7 juin 2012 à 23:56
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"])
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"])
djflexlive
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
95
8 juin 2012 à 01:04
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
8 juin 2012 à 08:11
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.
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.
djflexlive
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
95
8 juin 2012 à 13:43
8 juin 2012 à 13:43
Thanks !! Merci à toi pour les liens ;)