<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="CodeIgniter(CI)框架如何支持service层（附代码）" id="card1">
<p> 游客</p><p>
标题:CodeIgniter(CI)框架如何支持service层（附代码）<br/>
正文:<br/>
大家知道CodeIgniter框架式MVC分层的，通常大家把业务逻辑写到Controller中，而Model只负责和数据库打交道。但是随着业务越来越复杂，controller越来越臃肿，举一个简单的例子，比如说用户下订单，这必然会有一系列的操作：更新购物车、添加订单记录、会员添加积分等等，且下订单的过程可能在多种场景出现，如果这样的代码放controller中则很臃肿难以复用，如果放model会让持久层和业务层耦合。现在公司的项目就是，很多人将一些业务逻辑写到model中去了，model中又调其它model，也就是业务层和持久层相互耦合。这是极其不合理的，会让model难以维护，且方法难以复用。是不是可以考虑在controller和model中加一个业务层service，由它来负责业务逻辑，封装好的调用接口可以被controller复用。这样各层的任务就明确了：<br/> Model(DAO):数据持久层的工作，对数据库的操作都封装在这。<br/> Service ： 业务逻辑层，负责业务模块的逻辑应用设计，controller中就可以调用service的接口实现业务逻辑处理，提高了通用的业务逻辑的复用性，设计到具体业务实现会调用Model的接口。<br/> Controller ：控制层，负责具体业务流程控制，这里调用service层，将数据返回到视图<br/> View ： 负责前端页面展示，与Controller紧密联系。基于上面描述，实现过程：<br/> （1）让CI能够加载service,service目录放在application下，因为CI系统没有service，则在application/core下新建扩展MY_Service.php代码如下:<br/> &amp;lt;?php<br/> class MY_Service<br/> {<br/>     public function __construct()<br/>     {<br/>         log_message('debug', &quot;Service Class Initialized&quot;);<br/>     }<br/> &amp;nbs<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2032&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2032&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2032&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2032&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2032&amp;Page=10">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=2032">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=2032">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>