使用变量调用类和函数

时间:2018-12-11 03:06:20

标签: php laravel php-7

我一直在想是否可以调用这样的函数

//
public function getDataSource($id,$source,Request $request){

    $form = 'Invoice';
    $fuToCall = $source;

    return \App\Core\Forms\.$form.\.$form.DataSource::$fuToCall();


}

我的$ form名称的串联无效,为什么?有人可以帮忙吗。

2 个答案:

答案 0 :(得分:2)

您实际上并不是在串联字符串。您的示例中名称空间的非动态部分不是字符串。

您可以这样做:

$class = '\App\Core\Forms\\'.$form.'\\'.$form.'\DataSource';
return $class::$fuToCall();

或用1行:

return ('\App\Core\Forms\\'.$form.'\\'.$form.'\DataSource')::$funcToCall();

答案 1 :(得分:1)

这应该有效。

call_user_func('\App\Core\Forms\\' . $form . '\\' . $form . '\\DataSource', 'fuToCall');