0

クリーンで簡潔な方法で、どの関数でもすべてのパラメーターを効率的にチェックするにはどうすればよいのか疑問に思っていました。私は思いついた:

function fooBar($myArg, $mySecondArg, $myOptionnalArg = "defaultValue"){
    if(!isset($myArg, $mySecondArg, $myOptionnalArg){
        die(__FUNCTION__ . ":missing parameter");
    }

    if(empty($myArg, $mySecondArg, $myOptionnalArg){
        die(__FUNCTION__ . ":empty parameter");
    }
    //Do stuff
}

私が探しているのはもっと似ています:

function fooBar($myArg, $mySecondArg, $myOptionnalArg = "defaultValue"){
    $argArray = func_get_args();
    foreach($argArray as $a){
        if(empty($a)){
            die(__FUNCTION__.":".get_arg_name($a)."is empty");
        }        
        if(!isset($a)){
            die(__FUNCTION__.":".get_arg_name($a)."is unset");
        }    
    }
    //Do stuff
}

get_arg_name();Wichは純粋なフィクションであるため機能せずfunc_get_args();、プロトタイプで定義されたパラメーターではなく、実際のパラメーターを返します。

誰かが私にそれについてのヒントを教えてもらえますか?それを達成するための他の良い/クリーンな方法も歓迎します。ありがとう

4

2 に答える 2

3

反射のみ。いくつかの例:

function test($a, $b, $c) {
  $function = new ReflectionFunction(__FUNCTION__);
  $parameters = $function->getParameters();

  print_r($parameters);
}

test(0, 1, 2);

次のようなものが表示されます。

Array
(
    [0] => ReflectionParameter Object
        (
            [name] => a
        )

    [1] => ReflectionParameter Object
        (
            [name] => b
        )

    [2] => ReflectionParameter Object
        (
            [name] => c
        )

)
于 2012-06-14T15:38:25.370 に答える
1

Its possible to get what you need with using php reflection:

http://php.net/manual/en/book.reflection.php

Please, read more about how to use it.

于 2012-06-14T15:37:15.387 に答える