在php中存储和使用任意方法参数

在php中存储和使用任意方法参数,php,Php,我将作业存储在一个表中,该表由进程拾取并稍后执行。 我现在存储作业的方式(除其他外)包括: $className,$method,$params 其中params是一个JSON编码的数组。现在我执行的工作如下: $params = Zend_Json_Decoder::decode($params); $cM = new $clname (); $result = $cM->$method ( $params ); 问题在于,不同的方法需要不同格式的参数——有些需要一定数量的标量

我将作业存储在一个表中,该表由进程拾取并稍后执行。 我现在存储作业的方式(除其他外)包括:

$className,$method,$params

其中params是一个JSON编码的数组。现在我执行的工作如下:

$params = Zend_Json_Decoder::decode($params);    
$cM = new $clname ();
$result = $cM->$method ( $params );
问题在于,不同的方法需要不同格式的参数——有些需要一定数量的标量,有些需要数组,有些需要混合

我应该如何打包和解包参数,以便它们可以成为任何方法的参数? 或者我应该用完全不同的方式来做?
谢谢您的帮助。

尝试代码评估。我认为这应该解决你的问题

$params = Zend_Json_Decoder::decode($params);
$params_str = "";
$params_first = true;
foreach (array_keys($params) as $param) {
   $params_str .= (($params_first) ? "" : ",") . " \$params[$param]";
   $params_first = false;
}
$cM = new $clname ();
eval("\$result = \$cM->$method ( $params_str );");

尝试代码评估。我认为这应该解决你的问题

$params = Zend_Json_Decoder::decode($params);
$params_str = "";
$params_first = true;
foreach (array_keys($params) as $param) {
   $params_str .= (($params_first) ? "" : ",") . " \$params[$param]";
   $params_first = false;
}
$cM = new $clname ();
eval("\$result = \$cM->$method ( $params_str );");

保留现有的存储方法,并使用以下方法调用例程:


唯一的缺点是,当所讨论的方法希望通过引用传递参数时,它确实开始变得复杂。

保留现有的存储方法,并使用以下方法调用例程:

唯一的缺点是,当所讨论的方法希望通过引用传递参数时,它确实开始变得复杂。

请。
serialize()
unserialize()
?如果您不在PHP和JavaScript之间传递数据,那么它比JSON编码稍微高效一些。另外,请参见:func_get_args-Please.
serialize()
unserialize()
?如果您不在PHP和JavaScript之间传递数据,那么它比JSON编码稍微高效一些。另外,请参见:func_get_args-