PHP中如何在不调用闭包的前提下获取其参数的类类型
解决方案
你可以通过PHP的反射API ReflectionFunction 读取闭包的元信息,拿到参数的类型声明类名,示例实现如下:
// 示例闭包 $a = function (class_name $var) { // 逻辑实现 }; // 初始化反射类解析闭包 $ref = new ReflectionFunction($a); // 获取闭包的所有参数 $params = $ref->getParameters(); foreach ($params as $param) { $type = $param->getType(); // 过滤内置类型、仅获取自定义类类型 if ($type instanceof ReflectionNamedType && !$type->isBuiltin()) { $targetClass = $type->getName(); var_dump($targetClass); // 此处可执行类引入操作 } }
注意事项
- 该方法要求PHP版本 >= 7.0,
getType()为PHP7.0新增的反射方法 - 如果闭包存在多个参数,遍历
$params数组即可依次获取所有参数的类名 - 你之前尝试的写法不生效是因为闭包对象本身没有公开的
parameter属性,所有的结构信息必须通过反射API读取
内容的提问来源于stack exchange,提问作者s.mohammad abedi nejad
相关产品推荐
相关产品推荐

