我可以使用变量作为类的名称吗?

时间:2016-10-18 05:00:29

标签: php laravel oop

这也有效:

$news_single = news::whereid($post_id)->first();

但这会引发错误:

$class_name  = 'news';
$news_single = $class_name::whereid($post_id)->first();

错误:

  

PostController.php第20行中的FatalErrorException:   未找到“新闻”类

我该如何解决?

我使用变量作为类名的意图是制作动态查询(kinda)。我的意思是我得到了URL的类名,并通过它指定了正确的 Model 。像这样:

public function ShowPost(Request $request){
    $post_id    = $request->segment(2);
    $class_name = $request->segment(1);
    $post       = $class_name::whereid($post_id)->first();
    return view('ShowPost',compact('post'));
}

1 个答案:

答案 0 :(得分:0)

我假设某个命名空间中有news类。

您必须将名称空间添加到字符串中。

$class_name  =  'App\\' .'news';
$news_single = $class_name::whereid($post_id)->first();