关于ThinkPHP中的Model分层类型,个人心得

浏览:19781 发布日期:2016/03/16 分类:技术分享 关键字: 模型分层,心得
关于ThinkPHP中的Model分层类型,个人心得
在ThinkPHP官方手册中,关于Model的分层类型只是大概简述了下。
大概简述了下官方举出了4中例子
1、Model层(模型层)
2、Service层(服务层)
3、Logic层(逻辑层)
4、API层(接口层)

一直以来都不是很明白Service层,Logic层,API层的具体用法
这一切都跟经验有关,在个人自己开发了几个项目之后,今天好像突然开窍了
Ps:作为一个自学屌丝,很不容易了
Service层,即是服务层的意思,如何使用它呢?我是这样处理的
在之前的例子中,我是统统把数据增删改查放到控制器层,再后面我发现其他人放到Model层中封装层函数处理,然后我也学着放进去,但是又发现这样也不是很好,举个例子:
业务功能:用户登录后台之后,需要修改自己的密码
业务分析:那我把这个修改密码的数据层操作分为两块,一个是Model层进行表数据校验,我比较老实,哈哈,把所有的表字段进行了分类校验,分别为:登录操作校验,字段逻辑校验,字段空值校验,字段长度校验,字段唯一性校验,字段类型校验,(除了登录操作是必须验证的条件,其他的验证都是存在就验证,这也保证了前台触发时,如果数据填空,或者输入的数据与数据库字段设计冲突时,不会直接返回错误,这点我已经提交给了官方建议:http://www.thinkphp.cn/topic/37410.html),进行完了数据校验之后,那么他的数据肯定是符合我们的要求的,直接实例化Service层模型,执行修改密码方法,在执行密码方法里面我就给他设定自动完成规则,然后进行自动创建数据,再通过读取当前用户登录的UID进行新增数据主键,直接执行save操作!
附上代码:<?php
namespace Admin\Service;

class MemberService extends \Think\Model{
/**
     * [edit_person_password 修改个人密码]
     * @param  string $field [要自动完成的字段]
     * @return [boolean]     
     */
    public function edit_person_password($fields = ''){
        $this->_auto = array(
            array('password','md5',3,'function'),
        );
                //是否指定创建字段
        if(!$fields){
            $this->create();
        } else {
            $this->field($fields)->create();
        }
        $core = new \Admin\Api\Core();
        $this->uid = $core->uid;
        return $this->save();
    }
}
Logic 与 Api 层模型都是跟Service大同小异,甚至你还可以自定义名称层模型,只要你的类继承了\Think\Model
最佳答案
评论( 相关
后面还有条评论,点击查看>>