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


store and use arbitrary method arguments in php

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

$className、$method$params

其中参数是 JSON 编码的数组。现在我正在执行这样的作业:

$params = Zend_Json_Decoder::decode($params);    
$cM = new $clname ();
$result = $cM->$method ( $params );

问题在于,不同的方法期望不同格式的参数 - 有些需要一定数量的标量,有些需要数组,有些需要混合。

我应该如何打包和解包参数,以便它们可以成为任何方法的参数?还是我应该以完全不同的方式执行此操作?感谢您的帮助。

保留现有的存储方法,并使用call_user_func_array()调用例程:

$params = Zend_Json_Decoder::decode($params);    
$cM = new $clname();
$result = call_user_func_array(array($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 );");