0

在 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

4

3 回答 3

4

使用ReflectionFunction并调用该 getNumberOfParameters方法。

您可以使用以下方法创建当前函数的实例:

$func = new ReflectionFunction(__FUNCTION__);

并使用获取定义参数的数量

$func->getNumberOfRequiredParameters();

编辑

用于课堂。

$func = new ReflectionMethod(__CLASS__, __FUNCTION__);
于 2012-08-17T15:59:23.823 回答
2

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

检查http://www.php.net/manual/fr/class.reflectionfunction.php

于 2012-08-17T15:59:37.530 回答
0

这将满足您的需要:

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()(因为没有必需的参数,它们都有默认值)

于 2012-08-17T16:13:27.697 回答