Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

case $toto = "titi"

5 réponses
Avatar
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

5 réponses

Avatar
Olivier Miakinen

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)

Avatar
slambert
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

Avatar
Gromitt
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).

Avatar
Olivier Miakinen

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.

Avatar
Michel Billaud
"Mihamina Rakotomandimby (R12y)" writes:

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)