J'ai un ancien programme qui utilise de nombreuses fois l'instruction
"global" pour déclarer des variables globales dans le corps de fonctions.
Cette instruction ne fonctionne plus en PHP5. Je souhaite donc la remplacer
par la nouvelle instruction "$GLOBALS", mais je n'arrive pas à faire mieux
que cela quand je travaille sur des variables de type tableaux
exemple simple :
---------------
Imaginons que ma variable globale est le tableau suivant :
$taba=array("cleA"=>1,"cleB"=>2);
Je voudrais la manipuler dans une fonction quelconque illustrée par
l'exemple suivant :
[ car cela ne fonctionne pas ] $GLOBALS['taba['cleA']']
Si tu remplaces « $tmp » par « $GLOBALS['taba'] » sur la ligne repérée par (*), tu penses que cela doit donner « $GLOBALS['taba['cleA']'] » ?
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
oam
Précision : Le warning que j'ai en utilisant l'instruction "global" avec PHP5 est la suivante :
"Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0"
et donc c'est pour cette raison que j'essaye d'utiliser les variables superglobals pour faire disparaitre ces warnings quand j'utilise des sessions en partant du principe que le problème vient de là...
Si vous avez une autre idée... n'hésitez pas !!!
Précision : Le warning que j'ai en utilisant l'instruction "global" avec
PHP5 est la suivante :
"Warning: Unknown: Your script possibly relies on a session side-effect
which existed until PHP 4.2.3. Please be advised that the session extension
does not consider global variables as a source of data, unless
register_globals is enabled. You can disable this functionality and this
warning by setting session.bug_compat_42 or session.bug_compat_warn to off,
respectively. in Unknown on line 0"
et donc c'est pour cette raison que j'essaye d'utiliser les variables
superglobals pour faire disparaitre ces warnings quand j'utilise des
sessions en partant du principe que le problème vient de là...
Précision : Le warning que j'ai en utilisant l'instruction "global" avec PHP5 est la suivante :
"Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0"
et donc c'est pour cette raison que j'essaye d'utiliser les variables superglobals pour faire disparaitre ces warnings quand j'utilise des sessions en partant du principe que le problème vient de là...
Si vous avez une autre idée... n'hésitez pas !!!
bruno modulix
oam wrote: (snip)
$GLOBALS['taba['cleA']'] =$GLOBALS['taba['cleA']'] + $ val; ne fonctionne pas !!!
Quelqu'un aurait-il une autre solution ?
Lire le Joli Manuel, et réécrire ça avec la Bonne Syntaxe(tm) ?
Allez, je suis dans un bon jour: $GLOBALS['taba']['cleA']
-- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"
oam wrote:
(snip)
$GLOBALS['taba['cleA']'] =$GLOBALS['taba['cleA']'] + $ val;
ne fonctionne pas !!!
Quelqu'un aurait-il une autre solution ?
Lire le Joli Manuel, et réécrire ça avec la Bonne Syntaxe(tm) ?
Allez, je suis dans un bon jour:
$GLOBALS['taba']['cleA']
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb@xiludom.gro'.split('@')])"
"bruno modulix" a écrit dans le message de news: 42aef02d$0$8908$
oam wrote: (snip)
$GLOBALS['taba['cleA']'] =$GLOBALS['taba['cleA']'] + $ val; ne fonctionne pas !!!
Quelqu'un aurait-il une autre solution ?
Lire le Joli Manuel, et réécrire ça avec la Bonne Syntaxe(tm) ?
Allez, je suis dans un bon jour: $GLOBALS['taba']['cleA']
Autant pour moi, je vais donc de ce pas acheter une nouvelle Bible ;-)
-- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"
oam
"Guillaume Bouchard" a écrit dans le message de news: d8mqlh$km3$
oam wrote:
J'ai un ancien programme qui utilise de nombreuses fois l'instruction "global"
Haa, Vade Retro !
OUI
pour déclarer des variables globales dans le corps de fonctions.
Cette instruction ne fonctionne plus en PHP5.
Tu m'etonnes que peut.
Je souhaite donc la remplacer par la nouvelle instruction "$GLOBALS",
Erreur de conception AMHA. Repete après moi, les Globals c'est mal (tm)
Je sais, mais le source à modifier est long, très long, très très long... (plus de 20.000 lignes) donc je voudrais dans un premier temps aller au plus vite donc juste modifier ce qui ne va pas pour le rendre compatible PHP5, après je suis d'accord, on vire les GLOBAL !!!
function addition($val,$truc){ return $val + $truc; }
$taba['cleA'] = addition($val,$taba['cleA']);
Evidemment c'est le plus propre (mais voir remarque précédente).
Tu peux aussi voir du coté du passage par réference, utile dans certains cas.
c'est à dire ?
mais je dois à chaque fois passer par une variable temporaire, car $GLOBALS['taba['cleA']'] =$GLOBALS['taba['cleA']'] + $ val; ne fonctionne pas !!!
RTFM !
Reprenons le code plus haut :
$tmp = $GLOBALS['taba']; $tmp['cleA']
Avec un manipulation subtile, tu obtiens
$GLOBALS['taba']['cleA']
ce qui est la seule méthode pour accedé à des tableaux de tableaux.
Là il faut que je révise !!!!
-- Guillaume. J - 3.
MERCI.
"Guillaume Bouchard" <guillaume_fclp@apinc.org> a écrit dans le message de
news: d8mqlh$km3$1@demo2.univ-lyon1.fr...
oam wrote:
J'ai un ancien programme qui utilise de nombreuses fois l'instruction
"global"
Haa, Vade Retro !
OUI
pour déclarer des variables globales dans le corps de fonctions.
Cette instruction ne fonctionne plus en PHP5.
Tu m'etonnes que peut.
Je souhaite donc la remplacer par la nouvelle instruction "$GLOBALS",
Erreur de conception AMHA. Repete après moi, les Globals c'est mal (tm)
Je sais, mais le source à modifier est long, très long, très très long...
(plus de 20.000 lignes) donc je voudrais dans un premier temps aller au plus
vite donc juste modifier ce qui ne va pas pour le rendre compatible PHP5,
après je suis d'accord, on vire les GLOBAL !!!
"Guillaume Bouchard" a écrit dans le message de news: d8mqlh$km3$
oam wrote:
J'ai un ancien programme qui utilise de nombreuses fois l'instruction "global"
Haa, Vade Retro !
OUI
pour déclarer des variables globales dans le corps de fonctions.
Cette instruction ne fonctionne plus en PHP5.
Tu m'etonnes que peut.
Je souhaite donc la remplacer par la nouvelle instruction "$GLOBALS",
Erreur de conception AMHA. Repete après moi, les Globals c'est mal (tm)
Je sais, mais le source à modifier est long, très long, très très long... (plus de 20.000 lignes) donc je voudrais dans un premier temps aller au plus vite donc juste modifier ce qui ne va pas pour le rendre compatible PHP5, après je suis d'accord, on vire les GLOBAL !!!
function addition($val,$truc){ return $val + $truc; }
$taba['cleA'] = addition($val,$taba['cleA']);
Evidemment c'est le plus propre (mais voir remarque précédente).
Tu peux aussi voir du coté du passage par réference, utile dans certains cas.
c'est à dire ?
mais je dois à chaque fois passer par une variable temporaire, car $GLOBALS['taba['cleA']'] =$GLOBALS['taba['cleA']'] + $ val; ne fonctionne pas !!!
RTFM !
Reprenons le code plus haut :
$tmp = $GLOBALS['taba']; $tmp['cleA']
Avec un manipulation subtile, tu obtiens
$GLOBALS['taba']['cleA']
ce qui est la seule méthode pour accedé à des tableaux de tableaux.
Là il faut que je révise !!!!
-- Guillaume. J - 3.
MERCI.
P'tit Marcel
oam wrote:
Précision : Le warning que j'ai en utilisant l'instruction "global" avec PHP5 est la suivante :
"Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0"
Indépendamment des réponses déjà données, J'ajouterais que le message n'indique pas que la directive "global" n'est plus supportée par php5, heureusement d'ailleurs, on va pas se laisser avoir par les ayatollahs de l'Objet ;-)
Je suppose que tes scripts n'exploitent pas cette faille de php 4.1 donc pour ne plus être emmerdé et revenir à un fonctionnement standard, il te suffit a priori de définir dans la config :
session.bug_compat_42 0
eça -- P'tit Marcel
oam wrote:
Précision : Le warning que j'ai en utilisant l'instruction "global" avec
PHP5 est la suivante :
"Warning: Unknown: Your script possibly relies on a session side-effect
which existed until PHP 4.2.3. Please be advised that the session extension
does not consider global variables as a source of data, unless
register_globals is enabled. You can disable this functionality and this
warning by setting session.bug_compat_42 or session.bug_compat_warn to off,
respectively. in Unknown on line 0"
Indépendamment des réponses déjà données, J'ajouterais que le message
n'indique pas que la directive "global" n'est plus supportée par php5,
heureusement d'ailleurs, on va pas se laisser avoir par les ayatollahs
de l'Objet ;-)
Je suppose que tes scripts n'exploitent pas cette faille de php 4.1 donc
pour ne plus être emmerdé et revenir à un fonctionnement standard, il te
suffit a priori de définir dans la config :
Précision : Le warning que j'ai en utilisant l'instruction "global" avec PHP5 est la suivante :
"Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0"
Indépendamment des réponses déjà données, J'ajouterais que le message n'indique pas que la directive "global" n'est plus supportée par php5, heureusement d'ailleurs, on va pas se laisser avoir par les ayatollahs de l'Objet ;-)
Je suppose que tes scripts n'exploitent pas cette faille de php 4.1 donc pour ne plus être emmerdé et revenir à un fonctionnement standard, il te suffit a priori de définir dans la config :
session.bug_compat_42 0
eça -- P'tit Marcel
oam
Je suppose que tes scripts n'exploitent pas cette faille de php 4.1 donc pour ne plus être emmerdé et revenir à un fonctionnement standard, il te suffit a priori de définir dans la config :
session.bug_compat_42 0
Je m'y refuse. Je veux résoudre le problème.
Je suppose que tes scripts n'exploitent pas cette faille de php 4.1 donc
pour ne plus être emmerdé et revenir à un fonctionnement standard, il te
suffit a priori de définir dans la config :
Je suppose que tes scripts n'exploitent pas cette faille de php 4.1 donc pour ne plus être emmerdé et revenir à un fonctionnement standard, il te suffit a priori de définir dans la config :
session.bug_compat_42 0
Je m'y refuse. Je veux résoudre le problème.
P'tit Marcel
oam wrote:
session.bug_compat_42 0
Je m'y refuse. Je veux résoudre le problème.
en mettant cette directive à Off, tu élimines un bug de PHP. C'est contraire à tes principes ?
oam wrote:
session.bug_compat_42 0
Je m'y refuse. Je veux résoudre le problème.
en mettant cette directive à Off, tu élimines un bug de PHP. C'est
contraire à tes principes ?