Получает название типа переменной так, чтобы значение лучше соответствовало целям отладки

# get_debug_type

(PHP 8)

get_debug_type — Получает название типа переменной так, чтобы значение лучше соответствовало целям отладки

### Описание

function get_debug_type(mixed `$value`): string

Функция разрешает значение PHP-переменной `value` и возвращает название типа значения. Функция разрешает объекты в название класса, ресурсы — в название типа ресурса, а скалярные значения — в общепринятое название типа данных, которое указывают в объявлениях типов.

Отличие функции от функции gettype() состоит в том, что она возвращает названия типов, которые согласуются с практикой отладки лучше, чем те, которые остаются в языке по историческим причинам.

### Список параметров

`value`

  Переменная, тип которой проверяется.

### Возвращаемые значения

Функция возвращает строку (string) со значением из следующего списка:

Тип + состояние | Значение возврата | Примечания
--- | --- | ---
null | `"null"` | -
Логические значения: `true` или `false` | `"bool"` | -
Целые числа | `"int"` | -
Числа с плавающей точкой | `"float"` | -
Строки | `"string"` | -
Массивы | `"array"` | -
Ресурсы | `"resource (resourcename)"` | -
Закрытые ресурсы | `"resource (closed)"` | Пример: файловый поток после закрытия функцией fclose()
Объекты именованных классов | Полное имя класса с пространством имён, например `Foo\Bar` | -
Объекты анонимных классов | `"class@anonymous"`, название родительского класса, если класс расширяет класс, или название интерфейса, если класс реализует интерфейс, например `"Foo\Bar@anonymous"` | Анонимные классы — классы, которые создали синтаксисом `$x = new class { ... }`

### Примеры

Пример #1 Пример получения названия типа переменной функцией 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('/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;

    ?>

Вывод приведённого примера будет похож на:

    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

### Смотрите также

- gettype() - Возвращает тип переменной
- get_class() - Возвращает имя класса, которому принадлежит объект

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open