Вызов метода класса stati c со строковым именем - PullRequest
1 голос
/ 04 апреля 2020

В маршрутизаторах / сети. php:

Route::get('/{page}/{id}/{seo_title}', "Router@get");

В классе маршрутизатора, который является контроллером:

public function get($page,$id,$seo_title)
    {
        $view_arg = null;
        if($id)
        {
           $model =  "tbl_$page"."s";

            $view_arg =  $model::whereId($id)->first();  
            //  Error: Class 'tbl_posts' not found 

            //$view_arg =  call_user_func(array($model, 'whereId'),$id)->first(); 
            // Error : call_user_func() expects parameter 1 to be a valid callback, class 'tbl_posts' not found 
        }
      // Some other codes...
}

Я получил ошибку:

Ошибка: класс 'tbl_posts' не найден

На следующей строке:

$view_arg =  $model::whereId($id)->first();  

В то время как следующий код работает нормально:

tbl_posts::whereId($id)->first(); 

I Также пробовал следующее:

$view_arg =  call_user_func(array($model, 'whereId'),$id)->first(); 

И это дает мне ошибку

Ошибка: call_user_fun c () ожидает, что параметр 1 является допустимым обратным вызовом, класс

1 Ответ

0 голосов
/ 04 апреля 2020

Вы можете напрямую вызвать класс модели в функции.

public function get($page,$id,$seo_title)
{
    $view_arg = null;
    if($id)
    {
       $model =  "App\\" . "tbl_$page"."s"; 

        $view_arg =  $model::whereId($id)->first();  

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...