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 ?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fred
Le #24958512
Le 13/11/2012 08:14, Une Bévue a écrit :
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 ?




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
Une Bévue
Le #24958592
Le 13/11/2012 09:25, Fred a écrit :
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.




Super, merci bien pour cette idée élégante.
Et pour le cas où $_GET, je mets zero, càd le count($_GET).
Fred
Le #24958842
Le 13/11/2012 09:55, Une Bévue a écrit :

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.
Une Bévue
Le #24959022
Le 13/11/2012 10:49, Fred a écrit :

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 !
Olivier Miakinen
Le #24959002
Bonjour,

Le 13/11/2012 08:14, Une Bévue a écrit :

donc, la question, y a t'il plus mieux que des tests sur isset ?



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
Une Bévue
Le #24960152
Le 13/11/2012 11:24, Olivier Miakinen 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.



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()
Publicité
Poster une réponse
Anonyme