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

verifications de type

5 réponses
Avatar
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.

5 réponses

Avatar
Bruno Desthuilliers
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.
Avatar
CrazyCat
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
Avatar
Mickael Wolff
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
Avatar
Olivier Miakinen
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 :
<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.

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...
Avatar
Olivier Masson
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.