前控制器模式 - 路由器是前端控制器吗?

时间:2015-09-04 03:03:32

标签: php design-patterns slim front-controller

我正在尝试了解前端控制器应该的样子。来自维基百科,

  

前端控制器模式是列出的软件设计模式   几个模式目录。该模式涉及网络的设计   应用。它“提供了一个集中的处理点   请求“。

那么,下面的代码处理Slim中的路由是一个前端控制器吗?

$app = new \Slim\Slim();
$app->get('/books/:id', function ($id) use ($app) {

    // Get all books or one book.
    $bookModel = new ...
    $bookController = new ...

    $app->render('myTemplate.php', array('id' => $id, ...));
});

$app->run();

1 个答案:

答案 0 :(得分:4)

  

提供了一个处理请求的集中入口点。

是的,Slim可以是某种前端控制器。它处理所有传入的请求并将它们带到正确的位置/控制器。

不要将前端控制器与MVC模式的控制器混淆。

在您的示例中,路由是前端控制器的一部分,应该调用MVC模式的控制器。这个MVC控制器(在你的exmaple $ bookController中)负责评估信息,向视图提交信息并显示视图。因此,您的示例应如下所示:

//Inside of your frontcontroller, defining the route:
$app->get("/books/:id", "bookController:displayBook");

//Inside of your MVC bookController class:
public function displayBook($id)
{
    $book = Book::find($id);
    $app->view->set("book", $book);
    $app->view->render("form_book.php");
}