PHP 8.4.0 RC4 available for testing

get_debug_type

(PHP 8)

get_debug_typeRenvoie le nom du type de la variable d'une manière adaptée au débogage

Description

get_debug_type(mixed $value): string

Renvoie le nom résolu de la variable PHP value. Cette fonction résoudra les objets à leur nom de classe, les ressources à leur nom de type de ressource, et les valeurs scalaires à leur nom commun tel qu'il serait utilisé dans les déclarations de type.

Cette fonction diffère de gettype() en ce qu'elle renvoie des noms de type qui sont plus cohérents avec l'utilisation réelle, plutôt que ceux présents pour des raisons historiques.

Liste de paramètres

value

La variable dont le type doit être vérifié.

Valeurs de retour

Les types possibles de retour chaîne de caractères sont :

Type + Etat Valeur de retour Notes
null "null" -
Booléens (true or false) "bool" -
Nombres entiers "int" -
Nombres à virgules flottantes "float" -
Chaines de caractères "string" -
Tableaux "array" -
Ressources "resource (resourcename)" -
Ressources (Closed) "resource (closed)" Exemple: Un stream de fichier après être fermé avec fclose().
Objets depuis des Classes Nommées Le nom complet de la classe incluant le namespace par exemple Foo\Bar -
Objets depuis des Classes Anonymes "class@anonymous" ou le nom de la classe parente/le nom de l'interface si la classe étend une autre classe ou implémente une interface, par exemple "Foo\Bar@anonymous" Les classes anonymes sont créer via la syntaxe $x = new class { ... }

Exemples

Exemple #1 Exemple de get_debug_type()

<?php

namespace Foo;

echo
get_debug_type(null), PHP_EOL;
echo
get_debug_type(true), PHP_EOL;
echo
get_debug_type(1), PHP_EOL;
echo
get_debug_type(0.1), PHP_EOL;
echo
get_debug_type("foo"), PHP_EOL;
echo
get_debug_type([]), PHP_EOL;

$fp = fopen(__FILE__, 'rb');
echo
get_debug_type($fp), PHP_EOL;

fclose($fp);
echo
get_debug_type($fp), PHP_EOL;

echo
get_debug_type(new stdClass), PHP_EOL;
echo
get_debug_type(new class {}), PHP_EOL;


interface
A {}
interface
B {}
class
C {}

echo
get_debug_type(new class implements A {}), PHP_EOL;
echo
get_debug_type(new class implements A,B {}), PHP_EOL;
echo
get_debug_type(new class extends C {}), PHP_EOL;
echo
get_debug_type(new class extends C implements A {}), PHP_EOL;

?>

Résultat de l'exemple ci-dessus est similaire à :

null
bool
int
float
string
array
resource (stream)
resource (closed)
stdClass
class@anonymous
Foo\A@anonymous
Foo\A@anonymous
Foo\C@anonymous
Foo\C@anonymous

Voir aussi

add a note

User Contributed Notes 1 note

up
5
vyacheslav dot belchuk at gmail dot com
1 year ago
Also, the function returns the correct type of Closure, as opposed to gettype()

<?php

echo get_debug_type(function () {}) . PHP_EOL;
echo
get_debug_type(fn () => '') . PHP_EOL . PHP_EOL;

echo
gettype(function () {}) . PHP_EOL;
echo
gettype(fn () => '');

?>

Output:

Closure
Closure

object
object
To Top