verifications de type

Le
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_) ?

Merci.
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
Bruno Desthuilliers
Le #20454501
Olivier Masson a écrit :
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.
CrazyCat
Le #20454511
Bonjour,

Olivier Masson wrote:
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
Le #20455661
Olivier Masson a écrit :

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 Miakinen
Le #20455671
Le 30/10/2009 13:38, Bruno Desthuilliers répondait à 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 :

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.

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...
Olivier Masson
Le #20458301
Mickael Wolff a écrit :
Olivier Masson a écrit :

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