17-12-2012, 01:06 AM
Code PHP :
<?php
$i = '35';
var_dump($i);
var_dump(is_int($i));
var_dump((int)$i);
var_dump(is_int((int)$i));
?>
Renvoie
Citation :string '35' (length=2)
boolean false
int 35
boolean true
Donc si PDO traite bien des strings, alors le is_int est "false".
Personnellement, je préfère lever des exceptions si le typage est incorrect (throw new exception\badParameterType()): cela permet d'éviter l'affichage sur l'écran qui peut être problématique en recette (ou en déploiement du site). Je me suis d'ailleurs construit ma propre classe pour gérer les cast (accompagnée d'interface, 1 pour chaque cast de base, aka string, int, float, double, array, bool): ca simplifie pas mal de choses.
As-tu vraiment besoin de faire ce test "is_int" d'ailleurs? tu peux tout simplement forcer le cast en int: s'il n'est pas possible (car $pLevel est un objet), une erreur sera affichée, et s'il est possible, php le fera très bien...
Code PHP :
<?php
public function setLevelBatPrincipal($pLevel)
{
$this->_levelBatPrincipal= (int)$pLevel;
}
?>