Page 1 sur 1
fonctions en tableaux
Posté : 10 mars 2006, 17:27
par Invité
bonjour à tous,
j'ai un tableau tab qui contient des fonctions
$tab[0]= fonction0();
$tab[1]= fonction1();
$tab[2]= fonction2();
quelle syntaxe pour exécuter une des fonctions en appelant un élément du tableau?
Posté : 10 mars 2006, 19:58
par Spols
je suis pas sur que ca puisse fonctionner
qu'a tu deja essayer??
Posté : 10 mars 2006, 20:20
par KooKiz
Si tu fais :
$tab[0]= fonction0();
Tu ne vas pas mettre la fonction dans le tableau, mais sa valeur de retour.
Il faut plutôt que tu fasses quelque chose du genre :
$tab[0]= "fonction0();"
Et tu appelles ta fonction de cette manière :
eval($tab[0]);
Posté : 10 mars 2006, 21:08
par Ripat
Eviter eval() quand c'est possible.
L'exemple suivant montre comment faire plus simplement:
$tab[0]= date('d-m-Y H:i:s');
$tab[1]= date;
echo $tab[0];
echo '<br />';
echo $tab[1]('H:i:s');
Posté : 11 mars 2006, 14:16
par Invité
je vais tester ça, merci. Mais pourquoi est-ce déconseillé d'utiliser eval?
Posté : 11 mars 2006, 15:01
par Ripat
je vais tester ça, merci. Mais pourquoi est-ce déconseillé d'utiliser eval?
Principalement pour éviter d'ouvrir son serveur à des injections de code malicieux.
Voici un peu plus d'info:
Eval’s Inherent Security Risk
Eval by its nature is always going to be a security concern. You taking a string from an external source and bringing it into your PHP script, you can think of attacks of this nature to being equivalent to SQL injection though they can generally cause a lot more damage ($GLOBALS generally contains your DB password and PHP has lots of filesystem functions). Now proper escaping and data cleaning should mitigate these risks but its easier to just avoid them whenever possible.
Uses of Eval
Eval has 3 primary uses, providing compatability between php versions, generating class definitions and logic at runtime, and call functions with variable names. Now when we look at these 3 use cases the actual when to use eval choice breaks down like this: using eval for compat is great, for logic is good if there is no other way, and NEVER to call functions.
La fin du texte est catégorique:
...and NEVER to call functions.
Source:
http://blog.joshuaeichorn.com/archives/ ... al-in-php/
Mais j'imagine que tu devrais trouver d'autres commentaires sur le sujet.
Posté : 11 mars 2006, 17:02
par Invité
en testantle code, je reçois l'erreur suivante:
Notice: Use of undefined constant date - assumed 'date' in c:\program files\easyphp1-8\www\coop2\form_fertilisation.php on line 209
11-03-2006 16:00:57
16:00:57
Posté : 11 mars 2006, 18:03
par Invité
quand je supprime la ligne qui pose pb
$tab[1]= date;
j'obtiens une deuxième erreur
Notice: Undefined offset: 1 in c:\program files\easyphp1-8\www\coop2\form_fertilisation.php on line 213
Fatal error: Call to undefined function: () in c:\program files\easyphp1-8\www\coop2\form_fertilisation.php on line 213
et là c'est la ligne suivante qui pose pb:
$tab[1]('H:i:s');
Posté : 11 mars 2006, 18:04
par Ripat
C'est un avertissement, pas une erreur.
J'ai fait une erreur d'affectation.
$tab[1]= date; // pas correct
$tab[1]= 'date'; // correct
Posté : 11 mars 2006, 19:17
par Invité
ok, ça marche!
sinon autre question:
j'ai un tableau
et une fonction
Code : Tout sélectionner
funcion MaFonction ($couleur0, $couleur1, $couleur2);
echo $couleur0;
echo $couleur1;
echo $couleur2;
je passe les elements du tableau à MaFonction mais ça ne marche pas:
Je ne comprends pas où je me suis planté, je n'ai pas d'erreur mais la fonction n'affiche pas non plus les coueurs.
Posté : 11 mars 2006, 19:22
par Invité
tain faut que j'arrete la moquette, je recommence:
j'ai un tableau
une fonction
Code : Tout sélectionner
function MaFonction ($couleur0, $couleur1, $couleur2) {
echo $couleur0;
echo $couleur1;
echo $couleur2;
}
je passe les elements du tableau à MaFonction mais ça ne marche pas: