"vive PHP et MySQL" est une variable PHP valide

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 oct. 2007, 23:06

Apparu aujourd'hui sur le fil de Nexen

Voici la dernière technique de nommage étrange de variable en PHP : on peut utiliser une chaine de caractères avec des espaces. Il suffit d'utiliser les accolades pour délimiter la variable, et de mettre une chaine de caractères de votre choix.

Il est aussi possible de donner des noms idéographiques aux variables (comme en chinois ou japonais), mais ça, tout le monde le sait déjà.
<?php

${'vive PHP et MySQL'} = 'Mais oui!';

print ${'vive PHP et MySQL'};

print_r(get_defined_vars());

?>

Code : Tout sélectionner

Mais oui! Array ( [vive PHP et MySQL] => Mais oui! [] => 2 )
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 oct. 2007, 23:20

A recommander aux débutants :lol:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 1511 Messages

21 oct. 2007, 00:48

J'ose a peine imaginer le bordel ^^'
@+

ViPHP
fab
ViPHP | 2657 Messages

21 oct. 2007, 01:19

j'en vois pas vraiment l'interet mais pourquoi pas :)

C'est encore une des bizzareries de nommage à ajouter à php :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Mammouth du PHP | 19672 Messages

21 oct. 2007, 09:33

A recommander aux débutants :lol:
Truc, je te soupçonne d'avoir un coté psychopathe sadique :mrgreen:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 2937 Messages

23 oct. 2007, 00:52

Le jour où PHP 6 sortira pour de bon, on aura droit à de belles chinoiseries. :lol:

ViPHP
ViPHP | 928 Messages

23 oct. 2007, 01:18

Je ne trouve pas ça spécialement choquant, dans la mesure où on peut créer des clefs pour des tableaux avec n'importe quels types de caractères.

En soit :
$k['!ù@ fq'] = 'toto';
est aussi illisible que
${'!ù@ fq'} = 'toto';

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

23 oct. 2007, 13:41

Bonne idée ! On commençait à manquer d'idées de bugs... #-o

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

24 oct. 2007, 16:12

Mais cette fonctionnalité est très pratique...ne serait-ce que pour construire des variables dynamiques :
$nom = 'mereteresa';

${'compte_'.$nom} = 'compte en suisse';

echo $compte_mereteresa;
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 oct. 2007, 16:14

Disons que dans ces cas là, je passe par un tableau ;)
$nom = 'mereteresa';

$compte[$nom] = 'compte en suisse';

echo $compte[$nom];
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

24 oct. 2007, 16:22


Et avec :
${$nom}

//ou encore

${112233}

// $112233 est un nom impossible
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 oct. 2007, 16:57

${$nom} me semble être une aberration dans le sens où, si tu ne connais pas le nom, c'est un contenu.
J'utiliserais
$tab[$nom] = '';
//ou
$tab[] = $nom;
${112233} même réponse ;)

PS : je ne suis pas de mauvaise foi, je cherche juste à dire qu'il y a toujours une autre solution, et que je fait parti des personnes qui préfère éviter d'utiliser cette solution :lol:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer