PHP: get_debug_type - Manual
(PHP 8)
get_debug_type — Gets the type name of a variable in a way that is suitable for debugging
Description
function get_debug_type(mixed $value): string
This function differs from gettype() in that it returns type names that are more consistent with actual usage, rather than those present for historical reasons.
Parameters
value-
The variable being type checked.
Return Values
Possible values for the returned string are:
| Type + State | Return Value | Notes |
|---|---|---|
| null |
"null"
|
- |
Booleans (true or false) |
"bool"
|
- |
| Integers |
"int"
|
- |
| Floats |
"float"
|
- |
| Strings |
"string"
|
- |
| Arrays |
"array"
|
- |
| Resources |
"resource (resourcename)"
|
- |
| Resources (Closed) |
"resource (closed)"
|
Example: A file stream after being closed with fclose(). |
| Objects from Named Classes |
The full name of the class including its namespace e.g. Foo\Bar
|
- |
| Objects from Anonymous Classes |
"class@anonymous" or parent class name/interface name if the class extends another class or implements an interface e.g. "Foo\Bar@anonymous"
|
Anonymous classes are those created through the $x = new class { ... } syntax
|
Examples
Example #1 get_debug_type() example
<?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('/examples/book.xml', '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;
?>The above example will output something similar to:
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
See Also
- gettype() - Get the type of a variable
- get_class() - Returns the name of the class of an object
Found A Problem?
vyacheslav dot belchuk at gmail dot com ¶
2 years 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