1

可能重复:
PHP 在调用静态方法时使用变量

尝试在静态函数上使用变量时,我已经阅读了这里的一些不同帖子(IE PHP Using a variable when calling a static method),但我似乎无法让 call_user_func_array() 函数工作就像我能够直接在类名中调用变量一样。

PHP >= 5.3.0 方法:

$data = $factory_model::by_array(array(
    $form_fields['name_field']  => $value
));

PHP < 5.3.0 方法:

$data = call_user_func_array(array($factory_model, 'by_array'), array(  
    $form_fields['name_field']  => $value
));

这是我继承的一些代码,因此我无法对模型进行太多更改,但它应该提供以下输出:

initiative_forecast_type Object
(
    [id:initiative_forecast_type:private] => 0
    [forecast_type:initiative_forecast_type:private] => TRTR
    [tstamp] => 2012-06-11 12:52:07
)

它使用标准 PHP 5.3 方法(我的用户输入/值是 'TRTR')

但是,如果我使用 call_user_func_array 方法,我会得到:

initiative_forecast_type Object
(
    [id:initiative_forecast_type:private] => 0
    [forecast_type:initiative_forecast_type:private] => 
    [tstamp] => 2012-06-11 12:52:07
)

所以它没有设置“forecast_type”字段。我在这里上传了模型 - http://pastebin.ca/2160201

供参考 - $factory_model = Initiative_forecast_type_factory

我认为 2 call_user_func_array() 函数应该与 5.3.0 方法一样工作,但它似乎不是 - 谁能指出我正确的方向?

谢谢!基督教

4

1 回答 1

3

call_user_func_array()期望第二个参数是函数的实际参数的数组(数组中的键将被忽略)。你真正想要的是call_user_func().

call_user_func_array('func', array('foo' => 'bar')) === func('bar')
call_user_func_array('func', array(array('foo' => 'bar'))) === func(array('foo' => 'bar'))
call_user_func('func', array('foo' => 'bar')) === func(array('foo' => 'bar'))
于 2012-06-11T12:08:10.097 回答