1

2 つの引数を取る関数があります。

function index($LoadFunction, $footer) {
    // My statements
}

この関数に送信された引数の総数を次のように取得できますindex(1,2,3,4)

$numargs = func_num_args();
echo "Number of arguments: $numargs\n";

私が欲しいのは、このindex()関数に送信できる引数の数を知ることです。

どうすればこれができるようになりますか。

EDIT1:

これらも試しましたが、これは何もエコーしません

https://stackoverflow.com/a/346789/1182021

https://stackoverflow.com/a/346943/1182021

EDIT2:

わかりました、より適切な方法で説明します:

クラス foo {
   関数バー (arg1, arg2){
    .....
   }
}

私はこのようにクラスを呼び出しますfoo:

$class = 新しい foo(); // クラスのインスタンス化
$class->bar(1,2); // このコードは問題ありません

今、私がやりたいことは次のとおりです。

$method = new ReflectionClass('foo', 'bar');
$num = $method->getNumberOfParameters();
// 理想的には、これにより、この 'bar' が使用する引数の総数が得られるはずです
// 関数は取ることができますが、何もエコーしません。

どうすればこれを取得できるので、機能を確認したくありません。I want to check it before executing the function.

このことをどのように使用できますか:

ReflectionFunctionAbstract::getNumberOfParameters — パラメータの数を取得する
ReflectionFunctionAbstract::getNumberOfRequiredParameters — 必要なパラメータの数を取得する

上記はhttp://php.net/manual/en/book.reflection.phpより

4

2 に答える 2

1

PHP は、ユーザー定義関数の可変長引数リストをサポートしています。func_num_args()、func_get_arg()、および func_get_args() 関数を使用すると、これは非常に簡単です。

特別な構文は必要ありません。また、関数定義で引数リストを明示的に指定することもでき、通常どおりに動作します。

そのため、任意の数の引数を関数に渡すことができます。関数index(1,2,3,4,5,...) 内で少なくとも 2 つのパラメーターを渡さない場合、PHP は警告を生成します。

http://php.net/manual/en/functions.arguments.phpを確認してください

于 2013-07-17T10:51:13.253 に答える