专业网站建设品牌,18年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> CodeIgniter控制器之业务逻辑
CodeIgniter控制器之业务逻辑
来源:网络整理 时间:2023/2/14 0:06:42 共
3662
浏览
前面对公用控制器按模块分发,方便对特定模块的控制,而具体的实现类则是放在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之类的,其实也可以按照上面的思路单独放在一个文件夹中处理,方便管理。
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
贺卡设计平面素材网页版
自由图形设计素材网页版
梦幻图标设计素材网页版
促销网页设计案例分析怎么写
数码网页设计模板图片素材
网页界面排班设计图片模板
保护动物的网页设计方案
孟津附近网页设计店铺地址
蛋糕盒网页设计图片
做网页设计需要学什么知识
·上一条:
CodeIgniter控制器
|
·下一条:
CodeIgniter控制器之MY_Controller
同类资讯
方舟生存进化低温冰箱怎么通电_服务器
2022梦幻西游69级哪个区人多_服务器
作家二月河的笔名有什么寓意_服务器
红米手机网络连接正常但无法上网_服务器
庞氏骗局诈骗金额巨大_服务器
剪映拍同款加载失败怎么回事_服务器
steam单机游戏怎么跳过登录_服务器
黑莓9500好用不_服务器
ios系统怎么使用mt4打开下面那个附窗口_服务器
怎么用扫描仪传真_服务器
怎么小米迷你路由做成家用服务器_服务器
从什么时候开始手机不用设置时间了_服务器
网易电子邮箱在同一个市不同县登录算异地登录吗_服务器
你对5G手机有什么要求和看法_服务器
如何解决serverrespondedwithastatusof500_
server2016安装进入不了可视化界面_服务器
如何使用MATLAB对FFT的算法进行性能对比_python
sqlplus导入脚本卡死_服务器
吉林通服务器超时怎么进去_服务器
li函数用法_python
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2026 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com