Bonjour à tous !
Avant tout, je tiens à préciser que le code ci-dessous est seulement à titre d'illustration.
Il ne correspond aucunement à celui de mon projet qui n'aurait pas été approprié à l'exposition de mon problème.
Je souhaite comparer le type d'une variable avec le type d'un paramètre d'une fonction.
Par exemple, si j'ai:
$Valeur = 22;
$Fonction = function( int $Parametre ) { ... }
Je veux déterminer si le type de $Valeur correspond au type requis pour $Parametre (int).
-----------------
Voici ce que j'utilise pour récupérer le type de $Valeur:
$TypeVal = gettype($Valeur);
Et pour obtenir le type requis pour $Parametre:
// Récupère les informations de la fonction
$InfosAppel = new \ReflectionFunction($Fonction);
// Déduction des paramètres demandés
$ParametresAppel = $InfosAppel->getParameters();
// Obtention du type du premier paramètre
$TypeParam = (string)$ParametresAppel[0]->getType()
----------------
Jusque là, tout va bien. Maintenant venons-en au problème 
Si je lance mon code pour les valeurs données tout en haut, voilà ce que j'obtiens:
$TypeVal = "integer";
$TypeParam = "int";
Vous l'aurez bien compris, il m'est impossible d'avoir une comparaison fiable avec ces deux retours.
Comment se fait-il que ces deux fonctions retournent bien le même type mais avec un format différent ?
Est-il possible de passer de int à integer ou l'inverse en utilisant les fonctions standards ?
Merci d'avance !
Message édité le 30 septembre 2017 à 17:48:46 par BrouETH