[英]php function coded default parameter num
在PHP中,是否可以获得编码参数计数?
像这样的东西(伪代码):
function($a=false , $b=true){ //the $a=true... is just parameters, with default values
echo func_num_args();
echo ", ";
echo func_get_coded_params(); //how do i do this in PHP?
}
echo function(1 , 2); // output -> 2, 2
echo function(1, 2, 3, 4, 5, a, b, c); // output -> 8, 2
是否有一种方法/虚函数( func_get_coded_params()
)可以检索默认的编码参数计数? 在这种情况下,编码后的参数将是$ a和$ b本身,返回2。如果我执行function($a, $b, $c)
,它将返回3。
使用ReflectionFunction
并调用getNumberOfParameters
方法。
您可以使用以下命令创建当前函数的实例:
$func = new ReflectionFunction(__FUNCTION__);
并使用获取定义的参数数量
$func->getNumberOfRequiredParameters();
编辑
用于课堂。
$func = new ReflectionMethod(__CLASS__, __FUNCTION__);
PHP有许多有用的Reflection
类可供您使用。
function whatever($a, $b, $c)
{
$reflection = new ReflectionFunction(__FUNCTION__);
echo func_num_args() . ', ' . $reflection->getNumberOfRequiredParameters();
}
whatever(1,2,3,4,5); // Prints 5, 3
这将满足您的需求:
class x
{
function __construct($a=1,$b=2)
{
$constructor = new ReflectionMethod(__CLASS__,__FUNCTION__);
$params = $func->getNumberOfParameters();
echo func_num_args().",".$params;
}
}
$x = new x(1,2,3,4); //output -> 4,2
请注意,由于您在构造函数中为参数定义了默认值,因此您需要调用的是getNumberOfParameters()
而不是getNumberOfRequiredParameters()
(因为没有必需的参数,它们都具有默认值)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.