专业网站建设品牌,18年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> CodeIgniter控制器之业务逻辑
CodeIgniter控制器之业务逻辑
来源:网络整理 时间:2023/2/14 0:06:42 共
3670
浏览
前面对公用控制器按模块分发,方便对特定模块的控制,而具体的实现类则是放在library中。那放在library中是否合适呢?以及控制器中更多的业务逻辑该放在哪里?
先说下对CI中几个文件夹的理解
helpers、libraries:
存放一系列辅助函数、辅助类,用来辅助控制器、业务逻辑实现功能。他们中的方法应当尽量避免与CI依赖,依赖越紧越难以复用。以邮件发送为例,发送邮件时很多参数是不变的,如编码、协议、端口等,我们可能会在config下进行配置这些参数,然后library封装一个邮件发送的类,并在其中获取CI实例后读取这些参数。此时就出现了与CI实例的依赖,该类就只能在CI框架中使用,其他系统要用到,就只能重写了,没达到复用的目的。如果发送的类只是接收参数,并封装发送方法呢?所以说,尽可能的让helpers、libraries变的简单,职责变得单一。
controllers:
控制器目录。控制器主要用来接管程序,起到连接的作用。通常情况下,我们会把业务逻辑写在action中。但随着业务变得复杂,action代码将越来越臃肿,难以维护。
models:
模型目录。CI的模型的主要职责就是和数据库打交道,获取数据。很多时候也会把业务逻辑放在模型中,但业务逻辑与模型实际上是两种东西了。模型只是获取数据,业务逻辑可能是把这些数据根据业务需要进行组合,组合方式可能有很多种,放在模型中会让模型难以维护且不利于复用。说个碰到的例子,对数据按一定条件做缓存,获取数据和缓存结果两个流程写在同一个方法中,但同样的数据需要做另一种形式的缓存时发现,获取数据的方法就没法重用了。
third_party:
第三方类库目录。拿到一个类库后不要直接使用, 可以在library中进行一次封装,让其更适应于系统,其他人使用起来难度也会降低。
可以发现,每个文件夹都有自己的职责,每个模块都有自己的家,都有自己的职能。那业务逻辑该怎么办?
既然这样, 我们也应该给业务逻辑安个家,建立一个唯一的目录用来存放业务逻辑,暂且命名为service。控制器主要负责接收参数并调用service,service来调用模型,各层各尽其责。
下面看看怎么实现:
我们可以重写MY_Load,增加service方法,直接通过$this->load->service('user_service');来调用。
但业务逻辑很多都需要获取CI实例,这里可以参考模型的方法,core建立一个MY_Service,其他service均继承该类,这样子service里用法就跟控制器里一样了。
PHP
复制代码
class
MY_Service
{
public
function
__construct
(
)
{
log_message
(
'debug'
,
"Service Class Initialized"
)
;
}
function
__get
(
$key
)
{
$CI
=
&
get_instance
(
)
;
return
$CI
->
$key
;
}
}
复制代码
其实主要思路还是需要有一层用来处理业务逻辑,java中都有这一层。随着对CI的不断熟悉,发觉这里需要这一层,达到解放控制器和模型的目的。和这种类似的做法还有很多,如果系统中有很多地方需要用到web service 或者说cache之类的,其实也可以按照上面的思路单独放在一个文件夹中处理,方便管理。
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
UI素材网站建设
郴州网站建设美丽中国
贵阳租房网站建设
长葛视频网站建设
临海租房网站建设
律师网站建设单价
南昌网站建设方案优化
蒙语网站建设路
贞丰网站建设服务至上
喜悦家居网站建设
·上一条:
CodeIgniter控制器
|
·下一条:
CodeIgniter控制器之MY_Controller
同类资讯
王者荣耀怎么拉安卓好友进入战队_服务器
极影浏览器ip代理设置_服务器
cflretos是什么文件夹_服务器
我的世界v1311种子代码城堡_服务器
为什么罗布乐思国际服房间进不去_服务器
光遇删除后数据会重置吗_服务器
酷狗音乐怎么手动激活免流_服务器
为什么LPL两连冠了却还是没有让我感到以前LCK的那种统治力_服务器
无线路由器具体IP设置DNS设置_服务器
腾讯公司春节是工作日吗_服务器
网上怎么以最快的速度远程传输大容量文件_服务器
127001服务器拒绝连接怎么办_服务器
绝地求生开始游戏出现错误怎么解决_服务器
ciscodns服务器地址一定要配置嘛_服务器
http监控端口是多少_服务器
热血传奇怀旧版有人玩吗_服务器
单串是什么意思_服务器
倩女幽魂为什么找不到以前的服务器了_服务器
1230v2处理器玩现在的游戏_服务器
云帮手批量管理服务器_服务器
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2026 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com