par
moogli » 13 juil. 2016, 12:33
PHP par défaut fait du transtypage pour les variables, sauf si tu fais un declare(strict_types=1);
Justement, je l'ignorais; je ne pensais pas que PHP allait jusqu'à changer automatiquement le type d'une variable. Je pensais qu'il acceptait la string et faisait comme si c'était un int. Ça pousse vraiment à produire du code sale, le strict_types devrait être activé par défaut...
ou pas, php n'as jamais été un langage fortement typé.
C'est pas parfois bien cela t'éviter du transtypage de cochon quand tu valides un formulaire (qui envoi que du string au final, comment il ferais la différence entre un int et un long ou autre).
Ce n'est pas le seul dans le cas (Js ou on golang le font aussi pour ne citer qu'eux).
Dernière chose, comme tu le sais surement il n'est pas possible de typer une variable. a partir de la, même avec l'assurance du type correct tu peux faire n'importe quoi ensuite
bref, soit on utilise la fonctionnalité de php avec un type strict et on catch, soit on vérifie ce que l'on utilise
@+
[quote="carte-sd"][quote="@rthur"]PHP par défaut fait du transtypage pour les variables, sauf si tu fais un declare(strict_types=1);[/quote]
Justement, je l'ignorais; je ne pensais pas que PHP allait jusqu'à changer automatiquement le type d'une variable. Je pensais qu'il acceptait la string et faisait comme si c'était un int. Ça pousse vraiment à produire du code sale, le strict_types devrait être activé par défaut...[/quote]
ou pas, php n'as jamais été un langage fortement typé.
C'est pas parfois bien cela t'éviter du transtypage de cochon quand tu valides un formulaire (qui envoi que du string au final, comment il ferais la différence entre un int et un long ou autre).
Ce n'est pas le seul dans le cas (Js ou on golang le font aussi pour ne citer qu'eux).
Dernière chose, comme tu le sais surement il n'est pas possible de typer une variable. a partir de la, même avec l'assurance du type correct tu peux faire n'importe quoi ensuite ;)
bref, soit on utilise la fonctionnalité de php avec un type strict et on catch, soit on vérifie ce que l'on utilise ;)
@+