Discussion:
demande de conseil avec $_GET et dispatching
(trop ancien pour répondre)
Une Bévue
2012-11-13 07:14:40 UTC
Permalink
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 ?
Fred
2012-11-13 08:25:55 UTC
Permalink
Post by 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.
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 ?
- '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
2012-11-13 08:55:33 UTC
Permalink
Post by Fred
Bonjour,
tu peux faire une fonction construisant un nombre entier ou chaque bit
$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
2012-11-13 09:49:24 UTC
Permalink
Post by Une Bévue
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
2012-11-13 10:20:55 UTC
Permalink
Post by Fred
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
2012-11-13 10:24:42 UTC
Permalink
Bonjour,
Post by Une Bévue
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
Une Bévue
2012-11-13 17:16:54 UTC
Permalink
Post by Olivier Miakinen
<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()

Loading...