demande de conseil avec $_GET et dispatching
Le
Une Bévue

j'ai un prog disons index.php, qui peut ne pas avoir du tout de $_GET
car je souhaite pouvoir accéder aux fonctionnalités toujours avec cette
même page.
Aussi je fais des tas de tests du genre :
if(!isset($_GET['link']))
else if(isset($_GET['bookmarks']) && $_GET['bookmarks']'true')
y a t'il une solution plus élégante, je pense que oui, pour décrire
l'état de la machine ?
je peux avoir comme "adresse" :
- 'index.php' (ie pas de $_GET)
-> initialisation ;
- 'index.php?category=la-categorie'
-> afficher la catégorie ;
- 'index.php?category=la-categorie&link=le-lien.html'
-> afficher le lien ;
- 'index.php?category=la-categorie&link=le-lien.html&add_bookmark=true'
-> afficher le lien & ajouter le lien aux signets ;
- 'index.php?category=la-categorie&link=le-lien.html&add_notes=true'
-> afficher le lien & ajouter des notes à cette page ;
- 'index.php?bookmarks=true'
-> afficher les URLs des pages bookmarkées ;
- 'index.php?notes=true'
-> afficher les URLs des pages annotées ;
- 'index.php?search=true&<les conditions sur la recherche>'
-> afficher les URLs des pages correspondant à la recherche.
donc, la question, y a t'il plus mieux que des tests sur isset ?
car je souhaite pouvoir accéder aux fonctionnalités toujours avec cette
même page.
Aussi je fais des tas de tests du genre :
if(!isset($_GET['link']))
else if(isset($_GET['bookmarks']) && $_GET['bookmarks']'true')
y a t'il une solution plus élégante, je pense que oui, pour décrire
l'état de la machine ?
je peux avoir comme "adresse" :
- 'index.php' (ie pas de $_GET)
-> initialisation ;
- 'index.php?category=la-categorie'
-> afficher la catégorie ;
- 'index.php?category=la-categorie&link=le-lien.html'
-> afficher le lien ;
- 'index.php?category=la-categorie&link=le-lien.html&add_bookmark=true'
-> afficher le lien & ajouter le lien aux signets ;
- 'index.php?category=la-categorie&link=le-lien.html&add_notes=true'
-> afficher le lien & ajouter des notes à cette page ;
- 'index.php?bookmarks=true'
-> afficher les URLs des pages bookmarkées ;
- 'index.php?notes=true'
-> afficher les URLs des pages annotées ;
- 'index.php?search=true&<les conditions sur la recherche>'
-> afficher les URLs des pages correspondant à la recherche.
donc, la question, y a t'il plus mieux que des tests sur isset ?
Bonjour,
tu peux faire une fonction construisant un nombre entier ou chaque bit
correspond à un des éléments du tableau $_GET:
$test = ($_GET['category'] == true)*1 + ($_GET['link'] == true)*2 +
($_GET['add_bookmark'] == true)*4 + ($_GET['add_notes'] == true)*8 + ...
ce qui donne un nombre unique ( pour chaque situation) qui pourra être
testé avec un switch case.
Fred
Super, merci bien pour cette idée élégante.
Et pour le cas où $_GET, je mets zero, càd le count($_GET).
en général, je mettrais le cas '0' dans le switch pour la clarté du
code. Mais il faut voir l'intégration dans la page et ce qui est fait
au cour de l'initialisation.
oui, oui OK, merci !
Le 13/11/2012 08:14, Une Bévue a écrit :
Je ne sais pas si cela répond à ta question, mais à tout hasard :
De toute façon c'est toujours utile de le connaître.
Cordialement,
--
Olivier Miakinen
AH oui, je ne connaissais pas, c'est donc une remarque très utile parce
que :
To note: filter_has_var() is a bit faster than isset()
hors, j'utilise pour l'instant, isset()