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