Вызов класса и функции с использованием переменной - PullRequest
0 голосов
/ 11 декабря 2018

Мне было интересно, можно ли вызвать функцию следующим образом

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

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

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


}

Конкатенация моего имени $ form не работает, почему?Может кто-нибудь, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Это должно работать.

call_user_func('\App\Core\Forms\\' . $form . '\\' . $form . '\\DataSource', 'fuToCall');
0 голосов
/ 11 декабря 2018

Вы на самом деле не объединяете строки.Не динамическая часть пространства имен в вашем примере не является строкой.

Вы можете сделать это так:

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

Или с одной строкой:

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