gettype()
La fonction gettype() en PHP retourne le type d'une variable sous forme de chaîne lisible, utile pour le débogage et la gestion des entrées mixtes.
Introduction
PHP est un langage à typage dynamique : le type d'une variable est déterminé à l'exécution, et non déclaré à l'avance. La fonction intégrée gettype() vous permet d'inspecter ce type à l'exécution, en retournant une chaîne lisible telle que "integer" ou "string". Elle est pratique lorsque vous déboguez des valeurs inattendues, branchez votre code selon le type d'une entrée mixte, ou rédigez des messages de journalisation décrivant ce que vous avez réellement reçu.
Cette page couvre la syntaxe de la fonction, les chaînes exactes qu'elle peut retourner, les particularités des noms de types hérités qui piègent les développeurs, et quand utiliser gettype() plutôt que les fonctions dédiées is_*.
Syntaxe
gettype(mixed $value): stringgettype() prend un seul argument, $value — la variable dont vous souhaitez connaître le type — et retourne une chaîne nommant ce type. Elle ne lève jamais d'exception et ne modifie jamais son argument.
Valeurs de retour
gettype() retourne l'une des chaînes d'un ensemble fixe :
| Chaîne retournée | Type PHP |
|---|---|
"boolean" | bool (true / false) |
"integer" | int |
"double" | float (oui, double, et non "float" — voir l'écueil ci-dessous) |
"string" | string |
"array" | array |
"object" | toute instance d'objet |
"resource" | une ressource ouverte (ex. un descripteur de fichier) |
"resource (closed)" | une ressource fermée (PHP 7.2+) |
"NULL" | la valeur null |
"unknown type" | un type que PHP ne peut pas nommer autrement |
Exemple de base
Exemple de gettype() en PHP
Ici, nous définissons quatre variables de types différents et demandons à gettype() de nommer chacune d'elles. La sortie est string, integer, boolean et array — un nom de type par ligne.
L'écueil "double" et "integer"
Les chaînes retournées par gettype() ne correspondent pas aux mots-clés utilisés dans les déclarations de types. Un float est signalé comme "double", et un int est signalé comme "integer" :
<?php
echo gettype(3.14), "\n"; // double (NOT "float")
echo gettype(7), "\n"; // integer (NOT "int")
echo gettype(null), "\n"; // NULL (uppercase)
?>À cause de cela, comparer la sortie de gettype() avec "float" ou "int" échoue silencieusement. Si vous n'avez besoin que d'une réponse oui/non sur un seul type, préférez les fonctions dédiées — is_int(), is_float(), is_string(), is_array(), et leurs semblables — qui sont à la fois plus rapides et exemptes de la surprise liée au nommage :
<?php
$value = 7;
// Brittle: depends on the legacy name
if (gettype($value) === "integer") { /* ... */ }
// Clearer and faster:
if (is_int($value)) { /* ... */ }
?>Sur PHP 8.0 et versions ultérieures, get_debug_type() est l'alternative moderne : elle retourne les noms canoniques (int, float, bool) et, pour les objets, le nom de classe réel plutôt que simplement "object".
Quand utiliser gettype()
- Débogage et journalisation — afficher le type d'une valeur aux côtés de son contenu lors de la recherche d'un bogue.
- Gestion générique d'entrées mixtes — brancher dans un
switchlorsqu'une fonction accepte légitimement plusieurs types. - Inspection rapide — une vérification ponctuelle en console sans se soucier du nommage moderne.
Pour des dumps structurés complets d'une valeur (son type et son contenu, de manière récursive), utilisez var_dump() ou print_r(). Pour changer le type d'une variable plutôt que de le lire, consultez settype(). Pour une vue d'ensemble du système de types de PHP, lisez PHP Data Types.
Conclusion
gettype() vous donne une réponse rapide sous forme de chaîne à la question « quel type est cette valeur ? » — utile pour le débogage, la journalisation et la gestion des entrées mixtes. N'oubliez pas les noms hérités ("double" pour les flottants, "integer" pour les entiers) et préférez les fonctions is_* ou get_debug_type() lorsque vous avez besoin d'une vérification précise et pérenne.