获取具有默认值的函数参数

时间:2013-11-11 09:13:48

标签: php reflection

我知道如何获取功能参数。

我当然使用ReflectionMethod获取函数参数,但目前我无法获取这些参数的默认值。

这是我的代码,其中定义了函数

class A{
    public function fn($para1,$para2="not required"){
            //some kind of stuff
    }
}

获取函数参数的代码

$meth = new ReflectionMethod("A","fn");
foreach ($meth->getParameters() as $param) {
    //some kind of stuff   
}

现在请告诉我如何获取函数参数的默认值

2 个答案:

答案 0 :(得分:2)

来自文档:

<?php
function foo($test, $bar = 'baz')
{
    echo $test . $bar;
}

$function = new ReflectionFunction('foo');

foreach ($function->getParameters() as $param) {
    echo 'Name: ' . $param->getName() . PHP_EOL;
    if ($param->isOptional()) {
        echo 'Default value: ' . $param->getDefaultValue() . PHP_EOL;
    }
    echo PHP_EOL;
}
?>

http://www.php.net/manual/en/reflectionparameter.getdefaultvalue.php

答案 1 :(得分:0)

这是一种很容易找到答案的方法。

$meth = new ReflectionMethod("A","fn");
foreach ($meth->getParameters() as $param) {
        var_dump(get_class_methods(get_class($param)));
}

这将打印所有可用方法的列表,以下是最后几个:

[11]=> string(10) "isOptional"
[12]=> string(23) "isDefaultValueAvailable"
[13]=> string(15) "getDefaultValue"

这应该为您提供足够的信息来找出答案。也就是说,在进入手册之前。