laravel系统开发经验(四、控制器设计)

纲要

  文章是关于在laravel环境下开发遇到的一些问题和处理方法的集合,会涉及方方面面,这个是第一个章的内容。

3.控制器

控制器的逻辑大概有四种形式

  1. 只承担传入参数和返回处理值,主要的逻辑写在model里面
  2. 处理好参数,格式化返回值,model里面是通用的处理逻辑,尽量简单一些。
  3. 所有的逻辑都写在控制器层
  4. 所有的方法都写在model层

  不说优劣,只看个人的风格,但是总而言之有一点:模块化,不同的模块之间,彼此应该是独立的,耦合性比较低,同时也是比较通用的,便于任意组合拆分,让整个代码简单高效,这个应该是一个比较重要的一点。

  对于我而言,一般来说,是倾向于第二种,格式化一些简单的参数,然后传入model,而不是把所有的参数往model里面扔,或者所有的逻辑放在controller里面。

function index(Request $request){
    $getData   = $request->all();
    $member_id = getMember('member_id');
    $model     = new modelName();
    return $model->doSomeThing($getData,$member_id);
}

  对于控制器,参数的处理实际上是一个比较麻烦,繁琐的问题。判断一个传入的参数有没有值,是不是布尔值,是不是数字,跟其他的参数组合起来判断的时候,实际上要不少重复代码。laravel本身提供了一个校验机制,把这些校验规则放在路由,或者request类里面来检验,参数有问题在这一段就被拦截了,这点会比较好一些。

  但是针对组合的情况,比如id和appid,这两个参数,有一个有值,获取这个有值的,然后传入,这种情况的话,建议自己写一个公用的方法,来判断,会好些。

  总而言之,尘归尘,土归土,参数的检验和组装应该是控制器外层来检验的,业务逻辑的处理应该是model内部层来做,这一点应该要明确。

发表评论请留下您的大名
  • 最新评论
  • 总共0条评论