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()デフォルトのコード化されたパラメーター数を取得できる方法/架空のfunction( )はありますか?この場合、コード化されたパラメーターは$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 に答える