get_debug_type

(PHP 8)

get_debug_type以适合调试的方式获取变量的类型名称

描述

get_debug_type(混合 $value): 字符串

返回 PHP 变量 value 的解析名称。此函数将解析对象到其类名,资源到其资源类型名称,以及标量值到其在类型声明中使用的通用名称。

此函数与 gettype() 的区别在于,它返回与实际使用更一致的类型名称,而不是那些出于历史原因而存在的名称。

参数

value

正在进行类型检查的变量。

返回值

返回字符串的可能值是

类型 + 状态 返回值 注释
null "null" -
布尔值 (true 或 false) "bool" -
整数 "int" -
浮点数 "float" -
字符串 "string" -
数组 "array" -
资源 "resource (resourcename)" -
资源 (已关闭) "resource (closed)" 示例:使用 fclose 关闭文件流后。
来自命名类的对象 类的完整名称,包括其命名空间,例如 Foo\Bar -
来自匿名类的对象 "class@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;
?>

上面的示例将输出类似于

null
bool
int
float
string
array
resource (stream)
resource (closed)
stdClass
class@anonymous

参见

添加注释

用户贡献注释 1 个注释

vyacheslav dot belchuk at gmail dot com
9 个月前
此外,该函数返回闭包的正确类型,与 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 () => '');

?>

输出

Closure
Closure

object
object
To Top