PHP 8.4.1 Released!

get_debug_type

(PHP 8)

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

Описание

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

?>

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

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() - Возвращает имя класса, которому принадлежит объект

Добавить

Примечания пользователей 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