我正在尝试了解前端控制器应该的样子。来自维基百科,
前端控制器模式是列出的软件设计模式 几个模式目录。该模式涉及网络的设计 应用。它“提供了一个集中的处理点 请求“。
那么,下面的代码处理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();
答案 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");
}