Ou bien c'est de l'humour, ou bien c'est du chinois Bref j'ai pô compris.
Il veut juste dire que c'est pô bien !
Je pensais bien que si ce n'était de l'humour, ce voulait dire qque chose du genre. Mais là j'en ai besoin et indépendamment de toute "bonne" habitude.
Après, dans le cas général, je ne vois pas pourquoi ce serait si mal. En principe, si on utilise une globale, c'est pour éviter de la ré-inventer à chaque tour de roue et qu'on en a moultement l'usage.
-- Stephane Moriaux et son [moins] vieux Mac
Tu sais que les globales sont EVIL(tm) ?
Heu ?
Ou bien c'est de l'humour, ou bien c'est du chinois
Bref j'ai pô compris.
Il veut juste dire que c'est pô bien !
Je pensais bien que si ce n'était de l'humour, ce voulait dire qque
chose du genre.
Mais là j'en ai besoin et indépendamment de toute "bonne" habitude.
Après, dans le cas général, je ne vois pas pourquoi ce serait si mal.
En principe, si on utilise une globale, c'est pour éviter de la
ré-inventer à chaque tour de roue et qu'on en a moultement l'usage.
Ou bien c'est de l'humour, ou bien c'est du chinois Bref j'ai pô compris.
Il veut juste dire que c'est pô bien !
Je pensais bien que si ce n'était de l'humour, ce voulait dire qque chose du genre. Mais là j'en ai besoin et indépendamment de toute "bonne" habitude.
Après, dans le cas général, je ne vois pas pourquoi ce serait si mal. En principe, si on utilise une globale, c'est pour éviter de la ré-inventer à chaque tour de roue et qu'on en a moultement l'usage.
-- Stephane Moriaux et son [moins] vieux Mac
ASM
Tu sais que les globales sont EVIL(tm) ?
j'ai pô compris.
Il veut dire qu'il vaut mieux s'abstenir d'utiliser de variables globales et que les passer en paramètres est mieux pour de raisons de sécurité mais aussi pour éviter des bugs incompréhensibles quand on s'enmêle les pinceaux et qu'on sait plus d'ou vient une variable. De même il vaut mieux pour les variables de formulaire ou url utiliser $_REQUEST['mavariable'] et pour la session $_SESSION['mavariable']
C'est un cas un peut particulier : la 'variable' est un 'array' L'array (assez important, à double niveau et clés nominatives) en question est servi à toutes les sauces de toutes les fonctions de la page. Je trouve un peu bêtasse de devoir le passer systématiquement en argument.
Quant au $_REQUEST, oui bien sûr. Et même je passe tout en POST dès que je peux. J'espère que ce n'est pas mal faire ? que ça ne surcharge pas navigateur et/ou serveur ?
-- Stephane Moriaux et son [moins] vieux Mac
Tu sais que les globales sont EVIL(tm) ?
j'ai pô compris.
Il veut dire qu'il vaut mieux s'abstenir d'utiliser de variables
globales et que les passer en paramètres est mieux pour de raisons de
sécurité mais aussi pour éviter des bugs incompréhensibles quand on
s'enmêle les pinceaux et qu'on sait plus d'ou vient une variable.
De même il vaut mieux pour les variables de formulaire ou url utiliser
$_REQUEST['mavariable'] et pour la session $_SESSION['mavariable']
C'est un cas un peut particulier : la 'variable' est un 'array'
L'array (assez important, à double niveau et clés nominatives) en
question est servi à toutes les sauces de toutes les fonctions de la page.
Je trouve un peu bêtasse de devoir le passer systématiquement en argument.
Quant au $_REQUEST, oui bien sûr.
Et même je passe tout en POST dès que je peux. J'espère que ce n'est pas
mal faire ? que ça ne surcharge pas navigateur et/ou serveur ?
Il veut dire qu'il vaut mieux s'abstenir d'utiliser de variables globales et que les passer en paramètres est mieux pour de raisons de sécurité mais aussi pour éviter des bugs incompréhensibles quand on s'enmêle les pinceaux et qu'on sait plus d'ou vient une variable. De même il vaut mieux pour les variables de formulaire ou url utiliser $_REQUEST['mavariable'] et pour la session $_SESSION['mavariable']
C'est un cas un peut particulier : la 'variable' est un 'array' L'array (assez important, à double niveau et clés nominatives) en question est servi à toutes les sauces de toutes les fonctions de la page. Je trouve un peu bêtasse de devoir le passer systématiquement en argument.
Quant au $_REQUEST, oui bien sûr. Et même je passe tout en POST dès que je peux. J'espère que ce n'est pas mal faire ? que ça ne surcharge pas navigateur et/ou serveur ?
-- Stephane Moriaux et son [moins] vieux Mac
ASM
ASM wrote:
d'utiliser l'array $truc ? bien entendu sans passer cet array en argument
Tu sais que les globales sont EVIL(tm) ?
Heu ?
Ou bien c'est de l'humour, ou bien c'est du chinois
Non, de l'anglais.
Donc ce n'était pas une abréviation.
Bref j'ai pô compris.
Evil : Maléfique. Au sens fort.
et md ?
Les variables globales sont nocives. Elles introduisent un couplage fort (ta fonction dépend d'une variable globale, on ne peut donc pas l'utiliser si cette variable n'existe pas), entrainent des bugs difficiles à tracer (que se passe-t-il, dans ton code, si un fichier inclus définit une autre globale avec le même identifiant ?).
Et encore, dans ton exemple, la variable est utilisée en lecture seule...
oui, et elle est utilisée telle que et sans modif dans moult fonctions. Elle est la base de référence et de travail de tout le reste. En son absence tout ce qui suit n'a aucun interet, et rien ne fonctionnera.
A propos : cet array est reconstruit à chaque appel de la page à partir d'un fichier de 800 lignes et 9 éléments par lignes, le tout en mode texte brut. Gagnerais-je à faire écrire tout l'array dans un fichier qui ne serait donc qu'à lire (include) sans trituration pour mise en array, sachant qu'ansi ce fichier serait alors beaucoup plus lourd (800 répétitions des 9 clés nominatives)
Il est parfois difficile de les éviter (surtout dans un langage comme PHP qui n'a pas de notion de module et/ou d'espace de nommage), mais ça ne devrait pas être une pratique courante, et, quand c'est inévitable, il vaut mieux prendre des précautions pour éviter les problèmes (par exemple: convention de nommage pour éviter les conflits de noms, et avoir la définition de la globale et toutes les fonctions l'utilisant dans le même fichier).
Ha! je suis dans le correct alors :-)
-- Stephane Moriaux et son [moins] vieux Mac
ASM wrote:
d'utiliser l'array $truc ? bien entendu sans passer cet array en
argument
Tu sais que les globales sont EVIL(tm) ?
Heu ?
Ou bien c'est de l'humour, ou bien c'est du chinois
Non, de l'anglais.
Donc ce n'était pas une abréviation.
Bref j'ai pô compris.
Evil : Maléfique. Au sens fort.
et md ?
Les variables globales sont nocives. Elles introduisent un couplage fort
(ta fonction dépend d'une variable globale, on ne peut donc pas
l'utiliser si cette variable n'existe pas), entrainent des bugs
difficiles à tracer (que se passe-t-il, dans ton code, si un fichier
inclus définit une autre globale avec le même identifiant ?).
Et encore, dans ton exemple, la variable est utilisée en lecture seule...
oui, et elle est utilisée telle que et sans modif dans moult fonctions.
Elle est la base de référence et de travail de tout le reste.
En son absence tout ce qui suit n'a aucun interet, et rien ne fonctionnera.
A propos :
cet array est reconstruit à chaque appel de la page à partir d'un
fichier de 800 lignes et 9 éléments par lignes, le tout en mode texte brut.
Gagnerais-je à faire écrire tout l'array dans un fichier qui ne serait
donc qu'à lire (include) sans trituration pour mise en array, sachant
qu'ansi ce fichier serait alors beaucoup plus lourd (800 répétitions des
9 clés nominatives)
Il est parfois difficile de les éviter (surtout dans un langage comme
PHP qui n'a pas de notion de module et/ou d'espace de nommage), mais ça
ne devrait pas être une pratique courante, et, quand c'est inévitable,
il vaut mieux prendre des précautions pour éviter les problèmes (par
exemple: convention de nommage pour éviter les conflits de noms, et
avoir la définition de la globale et toutes les fonctions l'utilisant
dans le même fichier).
d'utiliser l'array $truc ? bien entendu sans passer cet array en argument
Tu sais que les globales sont EVIL(tm) ?
Heu ?
Ou bien c'est de l'humour, ou bien c'est du chinois
Non, de l'anglais.
Donc ce n'était pas une abréviation.
Bref j'ai pô compris.
Evil : Maléfique. Au sens fort.
et md ?
Les variables globales sont nocives. Elles introduisent un couplage fort (ta fonction dépend d'une variable globale, on ne peut donc pas l'utiliser si cette variable n'existe pas), entrainent des bugs difficiles à tracer (que se passe-t-il, dans ton code, si un fichier inclus définit une autre globale avec le même identifiant ?).
Et encore, dans ton exemple, la variable est utilisée en lecture seule...
oui, et elle est utilisée telle que et sans modif dans moult fonctions. Elle est la base de référence et de travail de tout le reste. En son absence tout ce qui suit n'a aucun interet, et rien ne fonctionnera.
A propos : cet array est reconstruit à chaque appel de la page à partir d'un fichier de 800 lignes et 9 éléments par lignes, le tout en mode texte brut. Gagnerais-je à faire écrire tout l'array dans un fichier qui ne serait donc qu'à lire (include) sans trituration pour mise en array, sachant qu'ansi ce fichier serait alors beaucoup plus lourd (800 répétitions des 9 clés nominatives)
Il est parfois difficile de les éviter (surtout dans un langage comme PHP qui n'a pas de notion de module et/ou d'espace de nommage), mais ça ne devrait pas être une pratique courante, et, quand c'est inévitable, il vaut mieux prendre des précautions pour éviter les problèmes (par exemple: convention de nommage pour éviter les conflits de noms, et avoir la définition de la globale et toutes les fonctions l'utilisant dans le même fichier).
Ha! je suis dans le correct alors :-)
-- Stephane Moriaux et son [moins] vieux Mac
Olivier Miakinen
function trouve($quoi) { global $truc;
$i = 0; foreach($truc as $element) { if ($element == $quoi) $i++; }
je vois que tu me corriges mon foreach() avec des { } c'est obligatoire ces { } ?
Absolument pas. C'est juste une pratique de programmation que j'ai adoptée en C, puis conservée en PHP et en JavaScript, pour éviter de bêtes bugs incompréhensibles quand -- par exemple -- on veut rajouter des traces.
Cas d'école. Tu as ceci :
foreach($truc as $element) { if ($element == $quoi) $i++; }
Pour rajouter une trace, pas de problème (je suppose que la fonction trace() fait ce qu'il faut) :
foreach($truc as $element) { trace("element = $element"); if ($element == $quoi) $i++; }
Si à la place tu avais cela :
foreach($truc as $element) if ($element == $quoi) $i++;
À moins de faire très gaffe tu te retrouves avec :
foreach($truc as $element) trace("element = $element"); if ($element == $quoi) $i++;
... et bien évidemment tout foire. (Au passage, « faire gaffe », cela veut dire rajouter les accolades manquantes, alors moi je préfère les avoir mises dès le départ.)
Note que je j'aurais fait aussi pour le if() si l'instruction avait été sur la ligne suivante. C'est-à-dire que je peux écrire ceci : if ($element == $quoi) $i++; ou cela : if ($element == $quoi) { $i++; } mais jamais cela : if ($element == $quoi) $i++;
Cordialement, -- Olivier Miakinen
function trouve($quoi)
{
global $truc;
$i = 0;
foreach($truc as $element) {
if ($element == $quoi) $i++;
}
je vois que tu me corriges mon foreach() avec des { }
c'est obligatoire ces { } ?
Absolument pas. C'est juste une pratique de programmation que j'ai
adoptée en C, puis conservée en PHP et en JavaScript, pour éviter de
bêtes bugs incompréhensibles quand -- par exemple -- on veut rajouter
des traces.
Cas d'école. Tu as ceci :
foreach($truc as $element) {
if ($element == $quoi) $i++;
}
Pour rajouter une trace, pas de problème (je suppose que la fonction
trace() fait ce qu'il faut) :
foreach($truc as $element) {
trace("element = $element");
if ($element == $quoi) $i++;
}
Si à la place tu avais cela :
foreach($truc as $element)
if ($element == $quoi) $i++;
À moins de faire très gaffe tu te retrouves avec :
foreach($truc as $element)
trace("element = $element");
if ($element == $quoi) $i++;
... et bien évidemment tout foire. (Au passage, « faire gaffe », cela
veut dire rajouter les accolades manquantes, alors moi je préfère les
avoir mises dès le départ.)
Note que je j'aurais fait aussi pour le if() si l'instruction avait été
sur la ligne suivante. C'est-à-dire que je peux écrire ceci :
if ($element == $quoi) $i++;
ou cela :
if ($element == $quoi) {
$i++;
}
mais jamais cela :
if ($element == $quoi)
$i++;
$i = 0; foreach($truc as $element) { if ($element == $quoi) $i++; }
je vois que tu me corriges mon foreach() avec des { } c'est obligatoire ces { } ?
Absolument pas. C'est juste une pratique de programmation que j'ai adoptée en C, puis conservée en PHP et en JavaScript, pour éviter de bêtes bugs incompréhensibles quand -- par exemple -- on veut rajouter des traces.
Cas d'école. Tu as ceci :
foreach($truc as $element) { if ($element == $quoi) $i++; }
Pour rajouter une trace, pas de problème (je suppose que la fonction trace() fait ce qu'il faut) :
foreach($truc as $element) { trace("element = $element"); if ($element == $quoi) $i++; }
Si à la place tu avais cela :
foreach($truc as $element) if ($element == $quoi) $i++;
À moins de faire très gaffe tu te retrouves avec :
foreach($truc as $element) trace("element = $element"); if ($element == $quoi) $i++;
... et bien évidemment tout foire. (Au passage, « faire gaffe », cela veut dire rajouter les accolades manquantes, alors moi je préfère les avoir mises dès le départ.)
Note que je j'aurais fait aussi pour le if() si l'instruction avait été sur la ligne suivante. C'est-à-dire que je peux écrire ceci : if ($element == $quoi) $i++; ou cela : if ($element == $quoi) { $i++; } mais jamais cela : if ($element == $quoi) $i++;
Cordialement, -- Olivier Miakinen
ASM
*ASM* @ 24/05/2006 11:34 :
Une manière de faire consiste à déclarer au début de la fonction que $truc est une variable globale :
C'est complètement à l'envers du JavaScript :-(
J'déteste le Javascript :-( toutes les variables y sont globales ??
Ha bon ? ça vient de sortir ? ou bien est-ce une réelle question ?
-- Stephane Moriaux et son [moins] vieux Mac
*ASM* @ 24/05/2006 11:34 :
Une manière de faire consiste à déclarer au début de la fonction que
$truc est une variable globale :
C'est complètement à l'envers du JavaScript :-(
J'déteste le Javascript :-( toutes les variables y sont globales ??
Ha bon ? ça vient de sortir ?
ou bien est-ce une réelle question ?
Une manière de faire consiste à déclarer au début de la fonction que $truc est une variable globale :
C'est complètement à l'envers du JavaScript :-(
J'déteste le Javascript :-( toutes les variables y sont globales ??
Ha bon ? ça vient de sortir ? ou bien est-ce une réelle question ?
-- Stephane Moriaux et son [moins] vieux Mac
ASM
function trouve($quoi) { $i = 0; foreach($truc as $element) if($element == $quoi) $i++; echo "trouve $i element(s)"; }
Sans répondre directement à ta question, moi j'utiliserais bien:
$i = count(array_keys($truc,$quoi));
bon ! une 3013 ième fonction ajoutée au 3012 déjà existantes ! :-) J'irais jeter un oeil chez php.net. J'ai idée que ça doit pouvoir servir.
Mais, en effet, l'objet n'était pas là du tout. J'ai juste essayé de faire un exemple court de ce que je voulais (un dessin etant touj mieux que de longues explications), la finalité de la fonction n'étant que pour la clore.
-- Stephane Moriaux et son [moins] vieux Mac
function trouve($quoi) {
$i = 0;
foreach($truc as $element)
if($element == $quoi) $i++;
echo "trouve $i element(s)";
}
Sans répondre directement à ta question, moi j'utiliserais bien:
$i = count(array_keys($truc,$quoi));
bon ! une 3013 ième fonction ajoutée au 3012 déjà existantes ! :-)
J'irais jeter un oeil chez php.net. J'ai idée que ça doit pouvoir servir.
Mais, en effet, l'objet n'était pas là du tout.
J'ai juste essayé de faire un exemple court de ce que je voulais
(un dessin etant touj mieux que de longues explications), la finalité de
la fonction n'étant que pour la clore.
function trouve($quoi) { $i = 0; foreach($truc as $element) if($element == $quoi) $i++; echo "trouve $i element(s)"; }
Sans répondre directement à ta question, moi j'utiliserais bien:
$i = count(array_keys($truc,$quoi));
bon ! une 3013 ième fonction ajoutée au 3012 déjà existantes ! :-) J'irais jeter un oeil chez php.net. J'ai idée que ça doit pouvoir servir.
Mais, en effet, l'objet n'était pas là du tout. J'ai juste essayé de faire un exemple court de ce que je voulais (un dessin etant touj mieux que de longues explications), la finalité de la fonction n'étant que pour la clore.
-- Stephane Moriaux et son [moins] vieux Mac
Florian Sinatra
*ASM* @ 25/05/2006 00:41 :
*ASM* @ 24/05/2006 11:34 :
Une manière de faire consiste à déclarer au début de la fonction que $truc est une variable globale :
J'déteste le Javascript :-( toutes les variables y sont globales ??
Ha bon ? ça vient de sortir ? ou bien est-ce une réelle question ?
Ben les ?? dénotent une question, oui. Que veux-tu dire par "C'est complètement à l'envers du JavaScript :-(" ??
*ASM* @ 25/05/2006 00:41 :
*ASM* @ 24/05/2006 11:34 :
Une manière de faire consiste à déclarer au début de la fonction que
$truc est une variable globale :
J'déteste le Javascript :-( toutes les variables y sont globales ??
Ha bon ? ça vient de sortir ?
ou bien est-ce une réelle question ?
Ben les ?? dénotent une question, oui. Que veux-tu dire par "C'est
complètement à l'envers du JavaScript :-(" ??
Une manière de faire consiste à déclarer au début de la fonction que $truc est une variable globale :
J'déteste le Javascript :-( toutes les variables y sont globales ??
Ha bon ? ça vient de sortir ? ou bien est-ce une réelle question ?
Ben les ?? dénotent une question, oui. Que veux-tu dire par "C'est complètement à l'envers du JavaScript :-(" ??
ASM
*ASM* @ 25/05/2006 00:41 :
Une manière de faire consiste à déclarer au début de la fonction que $truc est une variable globale :
J'déteste le Javascript :-( toutes les variables y sont globales ??
Ha bon ? ça vient de sortir ? ou bien est-ce une réelle question ?
Ben les ?? dénotent une question, oui. Que veux-tu dire par "C'est complètement à l'envers du JavaScript :-(" ??
En JS (comme en de nombreux autres langages à ce que j'ai cru entendre) les variables sont globales si on ne précise pas le contraire. Elles sont alors accessibles partout sur la page sans autre artifice et de manière naturelle puisqu'elles sont *globales*
C'est tout de même assez extraordinaire qu'en PHP il faille préciser qu'on s'adresse à la globalité comme si c'était une redécouverte à chaque fois.
Le pire c'est que sur le site php.net, ils ont tellement peur qu'on ose s'en servir qu'il faut vraiment savoir s'y prendre pour avoir cette info quant à l'acces à la globalité depuis une fonction.
-- Stephane Moriaux et son [moins] vieux Mac
*ASM* @ 25/05/2006 00:41 :
Une manière de faire consiste à déclarer au début de la fonction que
$truc est une variable globale :
J'déteste le Javascript :-( toutes les variables y sont globales ??
Ha bon ? ça vient de sortir ?
ou bien est-ce une réelle question ?
Ben les ?? dénotent une question, oui. Que veux-tu dire par "C'est
complètement à l'envers du JavaScript :-(" ??
En JS (comme en de nombreux autres langages à ce que j'ai cru entendre)
les variables sont globales si on ne précise pas le contraire.
Elles sont alors accessibles partout sur la page sans autre artifice et
de manière naturelle puisqu'elles sont *globales*
C'est tout de même assez extraordinaire qu'en PHP il faille préciser
qu'on s'adresse à la globalité comme si c'était une redécouverte à
chaque fois.
Le pire c'est que sur le site php.net, ils ont tellement peur qu'on ose
s'en servir qu'il faut vraiment savoir s'y prendre pour avoir cette info
quant à l'acces à la globalité depuis une fonction.
Une manière de faire consiste à déclarer au début de la fonction que $truc est une variable globale :
J'déteste le Javascript :-( toutes les variables y sont globales ??
Ha bon ? ça vient de sortir ? ou bien est-ce une réelle question ?
Ben les ?? dénotent une question, oui. Que veux-tu dire par "C'est complètement à l'envers du JavaScript :-(" ??
En JS (comme en de nombreux autres langages à ce que j'ai cru entendre) les variables sont globales si on ne précise pas le contraire. Elles sont alors accessibles partout sur la page sans autre artifice et de manière naturelle puisqu'elles sont *globales*
C'est tout de même assez extraordinaire qu'en PHP il faille préciser qu'on s'adresse à la globalité comme si c'était une redécouverte à chaque fois.
Le pire c'est que sur le site php.net, ils ont tellement peur qu'on ose s'en servir qu'il faut vraiment savoir s'y prendre pour avoir cette info quant à l'acces à la globalité depuis une fonction.
-- Stephane Moriaux et son [moins] vieux Mac
Thomas Labourdette
ASM a écrit le Jeudi 25 Mai 2006 19:51 :
[La doc sur le mot clé global]
Le pire c'est que sur le site php.net, ils ont tellement peur qu'on ose s'en servir qu'il faut vraiment savoir s'y prendre pour avoir cette info quant à l'acces à la globalité depuis une fonction.
L'information se trouve pourtant facilement, comme pour n'importe quel langage, dans la partie "Référence du langage/Les variables/Portée des variables" http://www.php.net/manual/fr/language.variables.scope.php
@+
-- Terry DIKUL (signature et citation aléatoires) Que faut-il faire quand une poupée gonflable a les yeux blancs? La vider.
ASM a écrit le Jeudi 25 Mai 2006 19:51 :
[La doc sur le mot clé global]
Le pire c'est que sur le site php.net, ils ont tellement peur qu'on ose
s'en servir qu'il faut vraiment savoir s'y prendre pour avoir cette info
quant à l'acces à la globalité depuis une fonction.
L'information se trouve pourtant facilement, comme pour n'importe quel
langage, dans la partie "Référence du langage/Les variables/Portée des
variables"
http://www.php.net/manual/fr/language.variables.scope.php
@+
--
Terry DIKUL (signature et citation aléatoires)
Que faut-il faire quand une poupée gonflable a les yeux blancs?
La vider.
Le pire c'est que sur le site php.net, ils ont tellement peur qu'on ose s'en servir qu'il faut vraiment savoir s'y prendre pour avoir cette info quant à l'acces à la globalité depuis une fonction.
L'information se trouve pourtant facilement, comme pour n'importe quel langage, dans la partie "Référence du langage/Les variables/Portée des variables" http://www.php.net/manual/fr/language.variables.scope.php
@+
-- Terry DIKUL (signature et citation aléatoires) Que faut-il faire quand une poupée gonflable a les yeux blancs? La vider.