PHP 8.4.0 RC4 available for testing

get_debug_type

(PHP 8)

get_debug_typeGets the type name of a variable in a way that is suitable for debugging

Descrizione

get_debug_type(mixed $value): string

Returns the resolved name of the PHP variable value. This function will resolve objects to their class name, resources to their resource type name, and scalar values to their common name as would be used in type declarations.

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.

Elenco dei parametri

value

The variable being type checked.

Valori restituiti

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

Esempi

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(__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;

?>

Il precedente esempio visualizzerà qualcosa simile a:

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

Vedere anche:

  • gettype() - Resituisce il tipo di una variabile
  • get_class() - Restituisce il nome della classe di un oggetto

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