Discussion:
verifications de type
(trop ancien pour répondre)
Olivier Masson
2009-10-30 11:20:49 UTC
Permalink
Bonjour,

Pourquoi (parce que j'imagine qu'il y a une ou plusieurs raisons)
existe-t-il plusieurs fonctions dans PHP qui permettent la vérification
de type (ctype_, is_, filter_) ?

Merci.
Bruno Desthuilliers
2009-10-30 12:38:51 UTC
Permalink
Post by Olivier Masson
Bonjour,
Pourquoi (parce que j'imagine qu'il y a une ou plusieurs raisons)
existe-t-il plusieurs fonctions dans PHP qui permettent la vérification
de type (ctype_, is_, filter_) ?
Heu... Parce que PHP est fondamentalement un empilage de gros hacks
cradingues et de fonctions ad-hoc, sans rien qui ressemble de près ou de
loin à une réflexion préalable, une vue d'ensemble, un souci de
cohérence, ou quelque autre éléments en rapport avec la notion de
"design" ?-)

Bon, ok, je --->[]

PS : contrairement à ce que le troll^Mpost ci-dessus pourrait laisser
croire, j'ai une certaine sympathie pour PHP... Malgré tout.
Olivier Miakinen
2009-10-30 15:47:32 UTC
Permalink
Post by Bruno Desthuilliers
Post by Olivier Masson
Pourquoi (parce que j'imagine qu'il y a une ou plusieurs raisons)
existe-t-il plusieurs fonctions dans PHP qui permettent la vérification
de type (ctype_, is_, filter_) ?
Heu... Parce que PHP est fondamentalement un empilage de gros hacks
[...]
C'est exactement ce que je pense. Pour être plus politiquement correct,
je dirais que cela vient de tout l'historique de PHP, et qu'il n'est
bien évidemment pas question de supprimer de vieilles fonctions parce
qu'on en a des nouvelles.

Les fonctions ctype_ viennent directement de la libc :
<http://pwet.fr/man/linux/conventions/posix/ctype_h>.

Les fonctions is_ viennent plutôt du fait que PHP est un langage à
typage faible (nécessité de distinguer aussi bien le type de certaines
variables que les transtypages possibles).

Quant aux fonctions filter_ elles sont plutôt orientées web, et plus
généralement traitement de données provenant de l'extérieur.
Post by Bruno Desthuilliers
PS : contrairement à ce que le troll^Mpost ci-dessus pourrait laisser
croire, j'ai une certaine sympathie pour PHP... Malgré tout.
Moi aussi. Le bazar n'est pas forcément plus mauvais que la cathédrale...
CrazyCat
2009-10-30 12:38:51 UTC
Permalink
Bonjour,
Post by Olivier Masson
Pourquoi (parce que j'imagine qu'il y a une ou plusieurs raisons)
existe-t-il plusieurs fonctions dans PHP qui permettent la vérification
de type (ctype_, is_, filter_) ?
La différence vient du principe de fonctionnement. Par exemple:
* is_numeric() va vérifier que l'argument est bien numérique et
acceptera 123, "0xFF" (hexadecimal), 0123 (octal), "+012.345e6", 3.14
* ctype_digit() va vérifier que tous les éléments de la chaine sont des
chiffres, 123 sera accepté mais pas 3.14
* filter_var() (qui n'existe que depuis PHP 5.2), ainsi que son nom
l'indique, permet d'appliquer un filtre sur la variable et son
utilisation pour simplement tester un type me semble être une solution
disproportionnée.

Notons d'ailleurs que filter_var() retourne soit la valeur filtrée soit
false, alors que les deux autres fonctions retourne un booleen.
--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces : http://www.g33k-zone.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Mickael Wolff
2009-10-30 15:47:32 UTC
Permalink
Post by Olivier Masson
Pourquoi (parce que j'imagine qu'il y a une ou plusieurs raisons)
existe-t-il plusieurs fonctions dans PHP qui permettent la vérification
de type (ctype_, is_, filter_) ?
Il n'ont pas le même but, et peuvent ne pas partager la même
sémantique. Les fonctions is_int, is_string, is_scalar, etc sont
relatives aux types natifs du langage.

ctype_ reprend les fonctions de la stdlib C (isdigit devient
ctype_digit).

filter_ est un ensemble de fonctions dont le but est de permettre le
filtrage des entrées (plutôt que leur simple validation).
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Olivier Masson
2009-10-30 23:32:26 UTC
Permalink
Post by Mickael Wolff
Post by Olivier Masson
Pourquoi (parce que j'imagine qu'il y a une ou plusieurs raisons)
existe-t-il plusieurs fonctions dans PHP qui permettent la
vérification de type (ctype_, is_, filter_) ?
Il n'ont pas le même but, et peuvent ne pas partager la même
sémantique. Les fonctions is_int, is_string, is_scalar, etc sont
relatives aux types natifs du langage.
ctype_ reprend les fonctions de la stdlib C (isdigit devient
ctype_digit).
filter_ est un ensemble de fonctions dont le but est de permettre le
filtrage des entrées (plutôt que leur simple validation).
Tiens c'est marrant, vous avez répondu en même temps par couple :)
Merci pour vos opinions.

Continuer la lecture sur narkive:
Loading...