如何在反射类方法(PHP 5.x)中获取参数类型?

柯比

我正在尝试获取类型$bar变量。

<?php
class Foo
{
    public function test(stdClass $bar, array $foo)
    {

    }
}

$reflect = new ReflectionClass('Foo');
foreach ($reflect->getMethods() as $method) {
    foreach ($method->getParameters() as $num => $parameter) {
        var_dump($parameter->getType());
    }
}

我希望,stdClass但是我得到

Call to undefined method ReflectionParameter::getType()

有什么事吗 还是有其他方法?

$ php -v
PHP 5.4.41 (cli) (built: May 14 2015 02:34:29)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

UPD1它也应适用于数组类型。

柯比

看起来已经在PHP Reflection中添加了类似的问题-将方法参数类型作为字符串获取

我编写了适用于所有情况的解决方案:

/**
 * @param ReflectionParameter $parameter
 * @return string|null
 */
function getParameterType(ReflectionParameter $parameter)
{
    $export = ReflectionParameter::export(
        array(
            $parameter->getDeclaringClass()->name,
            $parameter->getDeclaringFunction()->name
        ),
        $parameter->name,
        true
    );
    return preg_match('/[>] ([A-z]+) /', $export, $matches)
        ? $matches[1] : null;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在具有泛型参数和返回类型方法的Java中使用反射获取类的实例?

如何在不使用反射的情况下获取 php 类中的常量

如何在Kotlin中获取泛型类型参数的类

使用反射获取具有原始类型参数的类的方法

如何获取类中类型参数的擦除类型

如何在PHP类的类函数中获取参数

标量反射,获取超类的类型参数

如何在 symfony 5 中包含类?

如何通过Scala / Java方法中的反射获取参数名称和类型?

从Kotlin中的嵌套类型参数获取类

如何在通用方法中替换实际类型参数以获取其值参数的最终类型?

在周围的建议中,如何获取建议方法的参数的“类型参数”

如何从 Angular 5 中的 paramMap 获取查询参数?

如何从Typescript中的函数获取参数类型

Java反射:获取方法的返回参数的类型

如何在java反射中从可变数量的参数中获取方法

如何在Laravel 5中调用firebase / php-jwt类

如何在PHP的静态方法中获取类名?

具体5 - 如何在php中通过ajax获取文件

如何在WinRT中使用反射获取类的静态属性

如何从实现类中获取通用接口的类型参数?

C#反射-从基类中获取父类的通用参数类型

如何在TypeScript中获取类方法的返回类型

如何在Dart中通过反射获取构造函数的参数?

如何获取可变参数类型包中类型的索引?

Android 如何在 android.telecom.Call 类中反射

如何在扩展方法中获取“ this”参数的泛型类型参数?

使用反射获取Java中通用参数的类型

如何在TypeScript中获取参数类型的fn({param})?