我应该用这个结构..。
require 'vendor/autoload.php';
$app = new \Slim\App;
$app->get('/books', 'getBooks');
$app->get('/books/{id}', 'getBook');
$app->run();
function getBooks() {
// Return list of books
}
function getBook($id) {
// Return a single book
}还是这个“路线小组”?
require 'vendor/autoload.php';
$app = new \Slim\App;
$app->group('/books', function () use ($app) {
$app->get('', function ($req, $res) {
// Return list of books
});
$app->get('/{id:\d+}', function ($req, $res, $args) {
// Return a single book
});
});
$app->run();更好的方法是什么?前者似乎要干净得多。我是比较新的,所以我不知道利弊。
发布于 2016-10-27 14:15:59
通常,您使用路由组来组织类似的资源或内容,以便在代码中可以明显地看到它们之间的关系。如果需要在特定组上设置任何特殊条件(如中间件),路由组也很有用。例如,您的网站上可能有一个管理员部分,您希望在访问控制器之前确保用户实际上是管理员。
$app->get('panel/admin', 'Admin/DashboardController:index')->add($adminAuth);
$app->get('panel/admin/users', 'Admin/UserController:index')->add($adminAuth);
$app->post('panel/admin/users', 'Admin/UserController:create')->add($adminAuth);显然,将这些路线组合在一起更有意义,因为它们有着相似的特性。如果你将来需要改变这些特性(比如中间件的类型),你只需要做一次。
$app->group('/panel', function() use ($app) {
$app->group('/admin', function() use ($app) {
$app->get('', 'Admin/DashboardController:index');
$app->get('/users', 'Admin/UserController:index');
$app->post('/users', 'Admin/UserController:create');
})->add($adminAuth);
})->add($userAuth);如果您想要扩展特定URI的用例,那么就让我们假设您希望在面板中推出一个常规用户可以使用的新特性,这也是很有帮助的。
$app->group('/panel', function() use ($app) {
$app->group('/admin', function() use ($app) {
$app->get('', 'Admin/DashboardController:index');
$app->get('/users', 'Admin/UserController:index');
$app->post('/users', 'Admin/UserController:create');
})->add($adminAuth);
$app->get('', 'DashboardController:index');
})->add($userAuth);尽管这并不是很重要,但最好的做法是尽可能地布局您的所有代码,路由组允许您这样做。
https://stackoverflow.com/questions/34502856
复制相似问题