- class_implements: documentation ( source)
- var_dump: documentation ( source)
- array_values: documentation ( source)
- class_parents: documentation ( source)
- get_debug_type: documentation ( source)
<?php
/**
* @return non-empty-list<non-empty-string>
*/
function valueTypes(mixed $value): array
{
if (is_object($value)) {
return [
$value::class,
...array_values(class_parents($value)),
...array_values(class_implements($value)),
];
}
return [get_debug_type($value)];
}
interface I1 {}
interface I2 {}
abstract class A implements I1 {}
final class B extends A implements I2 {}
var_dump(valueTypes(1));
var_dump(valueTypes('string'));
var_dump(valueTypes(new B()));