php - 处理具有类似操作的路线的最佳实践是什么?

标签 php laravel

我正在开发一个图片库网络应用程序。它有很多访问路径,它们都应该以相同的方式渲染图库,唯一的区别是图片的顺序。

例如:

mysite.com/favorites -> shows all the pics ordered by number of favorites
mysite.com/views -> shows all the pics ordered by number of views
mysite.com/date -> shows all the pics ordered by date
mysite.com/votes -> shows all the pics ordered by votes

由于所有这些操作之间如此相似,在 Controller 上为每个路由定义一个操作并将顺序作为参数传递是一种好习惯吗?或者这个逻辑应该在模型中处理?

最佳答案

如果操作非常相似而与参数不同,那么有一个操作接受该参数可能是有意义的。最后一点不是规则,只是偏好。

根据您的具体情况,您可以使用带有参数的一条路由按如下方式处理:

Route::get('{orderBy}', 'GalleryController@showPics')

然后在你的 Controller 中你将看到如下内容:

class GalleryController extends BaseController
{
    public function showPics($orderBy)
    {
        $pics = $this->service->getPics($orderBy);
        return View::make('gallery')->with('pics', $pics);
    }
}

虽然它可以正常工作,但有一些要点需要考虑:

  1. 使用具有专门操作的 Controller 更具语义,即:showFavoritesshowMostViewedshowRecents、< em>showMostVoted。
  2. 想想景色。如果您计划提供不同的 View 、具有不同数据集的不同嵌套子级,最好针对每种情况采取一个操作。
  3. 代码可读性。想象一下 Controller 有几个 if 语句,几个 return 语句,所有这些都包装在一个大的 try-catch block 中,该 block 有多个 catch 子句...如果您可以避免下一个程序员用意大利面条代码而大脑失灵,请考虑它。

关于php - 处理具有类似操作的路线的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18194051/

相关文章:

php - Visual Studio 代码如何集成来自 PHP Srv 驱动程序的支持

php - Composer 即使已安装也找不到 ext-mbstring

php - 如何修复错误: SQLSTATE[42S02]: Base table or view not found: 114 6 Table 'bbs_hnq.configs' doesn't exist (SQL: select * from `configs` limit 1)

javascript - Laravel:我在 Controller 中编写的 URL 在 View 中不起作用

php - 从 Mysql 中检索数据很慢

php - 如何检索数组中与查询关联的其他值?

php - 关闭mysql连接重要吗?

php - Laravel - 按数字(整数)排序​​,即使列类型是字符串

php - Laravel:多个图像上的图像验证不起作用

php - Jquery:将输入类型从按钮更改为提交