将正确的参数传递给PHP中的变量方法

时间:2013-01-03 03:53:11

标签: php api-design

我正在设置一个PHP API,它将向我的用户公开功能和销售数据,我正在寻找一种优雅的方式将我的用户“传递”给我的参数传递给我的函数。我可以确定我的用户调用的方法($ _POST ['method']),并根据方法,该方法的零个或多个参数。我使用元数据数组验证它们。例如:

$methods = array(
   'say_hello' => array('name'),
   'say_goodbye' => array(),
   'do_something' => array( 'foo', 'bar' )
);

我有相应的功能:

function say_hello( $name ) { printf( "Hello, %s, $name ); }
function say_goodbye() { printf( "Goodbye!" ); }
function do_something( $foo, $bar ) { printf( "%d + %d = %d.", $foo, $bar, $foo+$bar ); }

当POST进来时,我检查他们请求的方法是我的数组键(因此他们没有传入$ _POST ['method'] ='exec'或任何邪恶的东西),而我可以做实际的电话:

$method = $_POST['method'];
$method(); // make the call

知道这个方法也可以让我确定参数应该是什么 - 如果有的话:

$args = $methods[ $method ]; // an array of 0-2 items

但是,如果没有一个大的if-elseif-elseif -...,我有一个很好的方法来组合它吗?

if( 'say_hello'==$method )
    $method( $_POST['name'] );
elseif( ... )
   ...

Python的myfunc(*args)之类的东西就是我想做的事情,这会让我以某种方式完成:

$method = $_POST['method'];
$args = $methods[ $method ];
$method( $args );

现在,我最好的办法是在方法中加载参数:

function do_something()
{
     $foo = $_POST['foo'];
     $bar = $_POST['bar'];
     ...

0 个答案:

没有答案