Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

demande de conseil avec $_GET et dispatching

6 réponses
Avatar
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 ?

6 réponses

Avatar
Fred
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
Avatar
Une Bévue
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).
Avatar
Fred
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.
Avatar
Une Bévue
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 !
Avatar
Olivier Miakinen
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 :
<http://fr2.php.net/filter>.

De toute façon c'est toujours utile de le connaître.

Cordialement,
--
Olivier Miakinen
Avatar
Une Bévue
Le 13/11/2012 11:24, Olivier Miakinen a écrit :
Je ne sais pas si cela répond à ta question, mais à tout hasard :
<http://fr2.php.net/filter>.

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()