(PHP 8)
get_debug_type — Получает название типа переменной так, чтобы значение лучше соответствовало целям отладки
Функция разрешает значение PHP-переменной value
и возвращает название типа значения.
Функция разрешает объекты в название класса, ресурсы — в название типа
ресурса, а скалярные значения — в общепринятое название типа данных,
которое указывают в объявлениях типов.
Отличие функции от функции gettype() состоит в том, что она возвращает названия типов, которые согласуются с практикой отладки лучше, чем те, которые остаются в языке по историческим причинам.
value
Переменная, тип которой проверяется.
Функция возвращает строку со значением из следующего списка:
Тип + состояние | Значение возврата | Примечания |
---|---|---|
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
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;
namespace Foo;
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