Remplacer un switch php
6 messages
• Page 1 sur 1
-

sff - WRInaute occasionnel

- Messages: 336
- Inscription: 2 Fév 2005
Remplacer un switch php
Bonjour,
Je me demande si il y a pas possibilité de remplacer un switch de ce genre :
Par une ligne de code plus simple. La "case" est toujours la même que la fonction à insérer. Pouvez vous m'aider ?
Merci
Je me demande si il y a pas possibilité de remplacer un switch de ce genre :
- Code: Tout sélectionner
if(isset($_GET['action'])){
switch ($_GET['action']) {
case 'add_sale': add_sale(); break;
case 'add_sale_crystals': add_sale_crystals(); break;
case 'buy': buy(); break;
case 'edit': edit(); break;
case 'delete': delete(); break;
case 'finalize': finalize(); break;
default : lists();
}
}else{
lists();
}
Par une ligne de code plus simple. La "case" est toujours la même que la fonction à insérer. Pouvez vous m'aider ?
Merci
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
Re: Remplacer un switch php
Ca devrait être possible en effet : http://www.manuelphp.com/php/functions.variable-functions.php
Par contre je te conseille tout de même de garder ton switch, qui permet de vérifier que tu ne récupères pas n'importe quoi du $_GET. Sinon bonjour les injections...
Par contre je te conseille tout de même de garder ton switch, qui permet de vérifier que tu ne récupères pas n'importe quoi du $_GET. Sinon bonjour les injections...
- Sullyvan
- WRInaute discret

- Messages: 90
- Inscription: 20 Mai 2008
Re: Remplacer un switch php
rudddy a écrit:$action = $_get['action'];
$$action();
un truc dans ce genre devrait faire ton bonheur
- Code: Tout sélectionner
call_user_func($_GET['action'])
me semble un peu plus approprié.
Il reste avant tout à vérifier que $_get['action'] n'est pas n'importe quoi avec un in_array par exemple.
- DadouDuck
- WRInaute impliqué

- Messages: 910
- Inscription: 28 Mai 2007
Re: Remplacer un switch php
Si c'est des fonctions "normales" :
Si c'est une méthode dans une classe
- Code: Tout sélectionner
if (function_exists($_GET['action'])) {
call_user_func_array($_GET['action']);
}
Si c'est une méthode dans une classe
- Code: Tout sélectionner
if (method_exists($_GET['action'])) {
call_user_func_array($_GET['action']);
}
6 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Problème PHP switch
- Problème PHP switch($page)
- Alternative plus rapide à un switch php
- Remplacer too.php par tutu.php avec ajout 1 parametre en plu
- Remplacer un bout de chaine php
- Remplacer un résultat par un autre en php
- Rechercher/remplacer avec php+mySQL
- Remplacer 60 pages html en 1 page php
- fonction pour remplacer des strings (php)
- Pb $DOCUMENT_ROOT sur Apache 2.0/PHP 4.3.1 à remplacer par
- AOL pourrait remplacer son partenaire Google par MSN - 07-12-2005
- Amazon pourrait se lancer dans la publicité contextuelle - 06-02-2006
- Description du TrustRank - 06-06-2005
- Fin du programme de parrainages AdSense et prochain réseau d'affiliation Google - 01-07-2008
- Pourquoi il ne faut pas utiliser d'underscore dans les URL - 03-04-2007
- Google API : guide de développement de l'API Google - 20-09-2002
- Google Speed Tracer : outil de monitoring d'application web - 14-12-2009
- Google TrustBox - 24-11-2005
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

