Page 1 sur 1

"vive PHP et MySQL" est une variable PHP valide

Posté : 20 oct. 2007, 23:06
par zeus
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 )

Posté : 20 oct. 2007, 23:20
par Truc
A recommander aux débutants :lol:

Posté : 21 oct. 2007, 00:48
par momox
J'ose a peine imaginer le bordel ^^'
@+

Posté : 21 oct. 2007, 01:19
par fab
j'en vois pas vraiment l'interet mais pourquoi pas :)

C'est encore une des bizzareries de nommage à ajouter à php :)

Posté : 21 oct. 2007, 09:33
par Cyrano
A recommander aux débutants :lol:
Truc, je te soupçonne d'avoir un coté psychopathe sadique :mrgreen:

Posté : 23 oct. 2007, 00:52
par Victor BRITO
Le jour où PHP 6 sortira pour de bon, on aura droit à de belles chinoiseries. :lol:

Posté : 23 oct. 2007, 01:18
par Genova
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';

Posté : 23 oct. 2007, 13:41
par albat
Bonne idée ! On commençait à manquer d'idées de bugs... #-o

Posté : 24 oct. 2007, 16:12
par mere-teresa
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;

Posté : 24 oct. 2007, 16:14
par zeus
Disons que dans ces cas là, je passe par un tableau ;)
$nom = 'mereteresa';

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

echo $compte[$nom];

Posté : 24 oct. 2007, 16:22
par mere-teresa

Et avec :
${$nom}

//ou encore

${112233}

// $112233 est un nom impossible

Posté : 24 oct. 2007, 16:57
par zeus
${$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: