Intéressant : $foo = (binary) 3

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Intéressant : $foo = (binary) 3

par Hubert Roksor » 28 mai 2007, 00:51

Ce sont les armes du programmeur : transtypage ! rétroportage ! clavicogyre !

par titerm » 28 mai 2007, 00:16

c'est une "culture" d'une autre époque

par Shrell » 27 mai 2007, 23:55

euh, désolé pour le HS, mais
(mais toujours pas de clavicogyres en vue)
c'est quoi un clavicogyre ? :oops:

par Hubert Roksor » 27 mai 2007, 22:05

Ben on parle de PHP 5, les (string) sont en fait des (binary), il ne fait pas la différence. D'ailleurs, j'ai pas testé mais sous PHP 6 ça devrait afficher à peu près la même chose

Code : Tout sélectionner

binary(1) "3"
Le truc du dessus au sujet de "11" c'était pour ceux qui auraient deviné à tort que (binary) transforme de la base-10 en binaire, alors qu'il sert à transformer des séries d'octets en codepoints.

par Sékiltoyai » 27 mai 2007, 13:10

Ouais mais je suis choqué par

Code : Tout sélectionner

string(1) "3"
D'une part par le type string, d'autre part par le fait que php interprète le contenu comme une chaine de caractère au lieu de nous donner le contenu exact, c'est à dire la représentation binaire.

par Hubert Roksor » 27 mai 2007, 03:42

Tu noteras que je me suis bien gardé d'utiliser le terme "chaîne de caractères" et préfère imaginer (binary) comme une "chaîne d'octets". En fait je crois qu'il serait plus juste d'abandonner le terme de chaîne pour les données binaires afin d'éviter toute confusion, mais je ne sais pas quels sont les plans de l'équipe qui s'occupent des docs de PHP.

par Sékiltoyai » 27 mai 2007, 01:26

binary pour des chaines de caractère ?
Le mot est plutôt mal choisi, non ?

Intéressant : $foo = (binary) 3

par Hubert Roksor » 27 mai 2007, 01:19

Hey!

J'ai une colle pour vous, est-ce que vous savez ce que donne ce code sous PHP 5.2 ?
$foo = (binary) 3;
var_dump($foo);
Si vous repondez

Code : Tout sélectionner

string(2) "11"
...c'est que vous êtes malin. Mais si vous répondez

Code : Tout sélectionner

string(1) "3"
...c'est que vous connaissiez déjà la réponse :lol:

Son inclusion dans PHP 5.2.1 m'avait échappée et je pensais que l'idée avait été abandonnée, mais il semblerait bien que l'opérateur de transtypage (binary) ait été rétroporté de PHP 6. (mais toujours pas de clavicogyres en vue) Et au cas où vous ne soyez pas déjà familier, il sert à indiquer qu'une chaîne est de type binaire. Il faut savoir que sous PHP 6 il existe une distinction entre les chaînes représentant du texte et celles représentant des données binaires (le contenu d'un fichier image, par exemple) et le résultat de certaines fonctions peut s'en trouver modifié. Sous PHP 6, on a donc deux types de données différents : (string) et (binary). Sous PHP 5, (binary) n'est qu'un synonyme de (string) mais il permet dès aujourd'hui d'assurer la compatilibité ascendante de ses scripts. Enfin, on est pas pressé non plus, hein.

À noter également, l'addition du préfixe "b" pour indiquer une chaîne binaire:
$binaire = b'contenu';
Voilà, c'était mon info du jour. :P