case $toto = "titi"

Le
Mihamina Rakotomandimby (R12y)
Bonjour,

J'ai un système avec une syntaxe the switch/case assez "vieille":

switch($toto)
{
case $toto = "titi":
// blablabla
case $toto = "tata":
// bliblibli
}

alors que dans la doc PHP, ça serait plutot

switch($toto)
{
case "titi":
// blablabla
case "tata":
// bliblibli
}

La première syntaxe passe sur un PHP 4.3.
Mais sur un 5.2 par défaut de chez Debian, ça ne passe plus, il faut passer
à la deuxième syntaxe.

Comme je sais que de temps en temps, il y a des options de
retro-compatibilité qui sont permises, sauriez-vous si il y en a une qui
ferait qu'on puisse passer ce système en 5.2 tout en remettant la
réécriture du code à légèrement plus tard?

En gros, le système sur lequel je travaille actuellement est un ensemble de
fichiers PHP de quelques milliers de lignes et une trentaine de "case"
chacun. Il faut le réécrire, je sais. Mais il faut d'autres choses aussi.

Merci.

--
"Beaucoup de gens achètent des choses dont ils n'ont pas besoin
avec de l'argent qu'il n'ont pas (crédits & emprunts)
pour impressionner des gens qu'ils n'aiment pas."
Inconnu
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #42555

J'ai un système avec une syntaxe the switch/case assez "vieille":

switch($toto)
{
case $toto = "titi":
// blablabla
case $toto = "tata":
// bliblibli
}


Hein ??? Ça a existé, ça ?!? C'est vieux ou c'est juste un bug ?

Même dans la doc de PHP/FI 2.0 il n'y a pas cette syntaxe :
http://www.php.net/manual/phpfi2.php#switch

alors que dans la doc PHP, ça serait plutot

switch($toto)
{
case "titi":
// blablabla
case "tata":
// bliblibli
}


Ben oui. Et en Java, en C++ ou en C on a exactement la même chose (si ce
n'est que les valeurs ne peuvent pas être des chaînes de caractères).

La première syntaxe passe sur un PHP 4.3.


Tu es sûr de ça ?

Essaye le code suivant :

$toto = "GABUZOMEU";
switch($toto)
{
case $toto = "titi":
// blablabla
case $toto = "tata":
// bliblibli
}
echo $toto;

Est-ce que ça affiche bien GABUZOMEU, ou alors plutôt titi ou tata ?

Comme je sais que de temps en temps, il y a des options de
retro-compatibilité qui sont permises, sauriez-vous si il y en a une qui
ferait qu'on puisse passer ce système en 5.2 tout en remettant la
réécriture du code à légèrement plus tard?


Il faudrait déjà savoir avec quelle version c'est censé être rétro-
compatible, si cela a jamais existé. Personnellement je doute.

En gros, le système sur lequel je travaille actuellement est un ensemble de
fichiers PHP de quelques milliers de lignes et une trentaine de "case"
chacun. Il faut le réécrire, je sais. Mais il faut d'autres choses aussi.


Peut-être un truc comme ce qui suit ?
s/(^[ ^I]*case[ ^I][ ^I]*$[^=]*)=[^:]*:/1:/
(les ^I sont des tabulations)

slambert
Le #38986
case $toto = "titi":


à transformer en

case "titi":


Ca sent pas l'expression régulière a plein nez, ca ?

Une ligne commencant par "case" avec "$machin =" dedans , remplacer le
"$machin =" par rien, quelque soit "machin".

Stef

Gromitt
Le #38987
Bonjour,


Aloha,

J'ai un système avec une syntaxe the switch/case assez "vieille":

switch($toto)
{
case $toto = "titi":
// blablabla
case $toto = "tata":
// bliblibli
}


La "bonne" "vieille" syntaxe serait sans doute plutot celle-ci :

switch (TRUE)
{
case ($toto === "titi"):
// blablabla
case ($toto === "tata"):
// bliblibli
}

Mais dans ce cas-ci, l'utilisation "normale" du switch est a
recommander inconditionnellement :

switch ((string) $toto) // le typage est important si tu ne
// veux pas qu'un scalaire
// (0 par exemple) puisse satisfaire
// le premier "case" de type string.
{
case "titi":
// ...
case "tata":
// ...
}

La "vieille" syntaxe est a utiliser dans des cas tres particuliers (et
encore... autant mettre des if...else).

Olivier Miakinen
Le #38988

Peut-être un truc comme ce qui suit ?
s/(^[ ^I]*case[ ^I][ ^I]*$[^=]*)=[^:]*:/1:/
(les ^I sont des tabulations)


Je me suis planté dans mon expression, mais je t'ai aussi répondu dans
fr.comp.os.unix.

Michel Billaud
Le #38528
"Mihamina Rakotomandimby (R12y)"
Bonjour,

J'ai un système avec une syntaxe the switch/case assez "vieille":

switch($toto)
{
case $toto = "titi":
// blablabla
case $toto = "tata":
// bliblibli
}


un coup de sed, ou de perl, pour nettoyer le terrain, genre

perl -pi -e /case .*=/case / *.php

?

MB
--
Michel BILLAUD
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)

Publicité
Poster une réponse
Anonyme