Je suis en train de rédiger un tutorial sur le casting et les types. Après, ta remarque est tout à fait juste ; mais elle présente une faille, c'est que indiquer qu'un point est problématique c'est donner un indice à un éventuel pirate.
C'est un cas précis où il faut comparer la sécurité et la performance ; mais si un pirate voit qu'il y a une erreur chaque fois qu'il tente de transformer un paramètre pour que ce ne soit plus un entier, il n'aura pas la même réaction que lorsqu'il ne note pas d'erreur (chaque erreur étant un indice lorsqu'on cherche à pirater un site web).
On pourra me répondre (avec raison) que c'est pousser la paranoïa un peu loin ; je l'admet et je l'assume totalement. C'est juste que j'ai l'habitude de raisonner d'abord au terme de minimorceau de sécurité avant de raisonner en terme de performance.
Pour la différence entre intval() et (int) $variable, je cherche depuis quelques temps un benchmark sur ça, et je pense que je vais finir par le faire moi-même ; en attendant, je préfere (mais là encore c'est vraiment quelque chose de personnel) intval() que je trouve plus naturel à écrire en php que (int). D'autant plus que certains éditeurs (comme la chose infame que j'utilisait il y a quelques années) ne supportent pas (int) en php. Mais comme je le disais, c'est vraiment personnel à ce niveau-là et (int) serait tout aussi, voir plus, adapté.
Edit : Je viens de faire un benchmark, et effectivement, (int) est presque deux fois plus rapide que intval() (Pour 10000 itérations, 0.0065 seconde pour intval contre 0.0036 pour (int)). Donc effectivement, (int) est plus interessant et plus adapté.
C'est un cas précis où il faut comparer la sécurité et la performance ; mais si un pirate voit qu'il y a une erreur chaque fois qu'il tente de transformer un paramètre pour que ce ne soit plus un entier, il n'aura pas la même réaction que lorsqu'il ne note pas d'erreur (chaque erreur étant un indice lorsqu'on cherche à pirater un site web).
On pourra me répondre (avec raison) que c'est pousser la paranoïa un peu loin ; je l'admet et je l'assume totalement. C'est juste que j'ai l'habitude de raisonner d'abord au terme de minimorceau de sécurité avant de raisonner en terme de performance.
Pour la différence entre intval() et (int) $variable, je cherche depuis quelques temps un benchmark sur ça, et je pense que je vais finir par le faire moi-même ; en attendant, je préfere (mais là encore c'est vraiment quelque chose de personnel) intval() que je trouve plus naturel à écrire en php que (int). D'autant plus que certains éditeurs (comme la chose infame que j'utilisait il y a quelques années) ne supportent pas (int) en php. Mais comme je le disais, c'est vraiment personnel à ce niveau-là et (int) serait tout aussi, voir plus, adapté.
Edit : Je viens de faire un benchmark, et effectivement, (int) est presque deux fois plus rapide que intval() (Pour 10000 itérations, 0.0065 seconde pour intval contre 0.0036 pour (int)). Donc effectivement, (int) est plus interessant et plus adapté.