api接口层demo疑问

比如demo给的团队活动。
demo
<?php
/**
 * api层
 *  
 * @return int code 0,参赛成功;1,队名已存在
 * @return int team_id 新建的团队ID
 */
public function joinIn() {
    $rs = array('code' => 0, 'team_id' => 0);

    DI()->userLite->check(true);

    $domain = new Domain_Team();
    if ($domain->isExists($this->teamName)) {
        $rs['code'] = 1;
        return $rs;
    }
    $teamId = $domain->joinIn($this->teamName);
    $rs['team_id'] = $teamId;
    return $rs;
}


/**
 * domain层
 *  
 *
 */
public function isExists( $teamName ) {
    $model = new Model_Team();
    return $model->isExists($teamName);
}


/**
 * model层
 *  
 */
public function isExists() {
    return  DI()->notorm->team->where('teamName = ?', $teamName)->count();
}

public function joinIn( $data ){
}
?>
 
我写的
<?php

//团队参赛接口,我现在在框架里面是这样写接口的
/**
 * api
 */
public function joinIn() {
    $rs = array('code' => 0, 'team_id' => 0);
    DI()->userLite->check(true);
    $data['teamName'] = $this->teamName;
    $domain = new Domain_Team();
    $rs = $domian->joinIn($data);
    return $rs;
}

/**
 * domain
 */
public function joinIn( $data ){
    $model = new Model_Team();
    if ($model->isExists($data['teamName'])) {
        $rs['code'] = 1;
        return $rs;
    }
    $teamId = $model->joinIn($data['teamName']);
    return $rs['team_id'] = $teamId;
}   

/**
 * model
 */
public function isExists( $data ){
   return  DI()->notorm->team->where('teamName = ?', $teamName)->count();
}

public function joinIn( $data ){
}
?>
我刚开始看了adm层是这么写的,然后后面是我自己写的,我想问的是为什么要上面这样写,我觉得我下面写得更合理一些。
已邀请:

wenzhenxi - 喵了个咪

赞同来自:

@瓦力     这样说吧 Domaim层增加了层级管理 但是增加灵活性 很多地方在用 isExists 做验证 有一台 验证的方式多了一个需要验证的 比如 状态 只需要改 isExists 方法 所有的地方都可以发送变化 如果使用调用model的情况 会出现所有地方都要改 或者在 domain 内部加逻辑的情况

dogstar - PhalApi创始人

赞同来自:

计算机的哲学,任何问题都可以通过一个中间层来解决。简单来说,Domain这个中间层就为了解决复杂的领域业务而生的,但具体开发过程中可视项目情况而选择如何使用。

要回复问题请先登录注册