新建的表block和service应该怎么选择?

文档问题 · hetao · 于 5年前 发布 · 2191 次阅读

service和block功能有啥侧重,是不是service提高操作,block提供整理过的数据。那么能从service中获取数据吗

共收到 9 条回复
Fecmall#15年前 0 个赞

你先去看文档去吧

http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-service-abc.html

讨论这些问题,先带上你自己的思考后的结果,先去看文档,在去看代码,自己思考后,带上你的思考结论讨论

hetao#25年前 0 个赞

这个主要讲Service没有讲block

hetao#35年前 0 个赞

不过我看这个block有点像mvvm里面viewModel的意思,一个view对应一个block,不知道对不对

Fecmall#45年前 0 个赞

model层: 数据库抽象层,最小的操作粒度是表的增删改查

services层:最小的粒度是一个语言描述的功能粒度,譬如将一个产品加入购物车,生成一个订单等,这个都是对应到services层的一个函数,也就是一个一个的services的函数 ,该层,更像数据的生产方,提供一个一个的服务,供各个入口调用, services层只有一个

block层,controller层: 每个入口(appfront,apphtml5)都是独立的,独立的controller,独立的block

controller是控制层,action方法得到请求后,进行数据的处理,数据处理是在block层进行的, block调用services层的函数来满足自身需要

上面和你说了大致的调用结构,services层更像数据的生产层,block更像数据的组织层

services层的函数,是数据的生产层,services层的实现可以调用mysql的model,也可以调用mongodb的model,甚至远程api,这样就可以很方便的重构,譬如现在购物车模块用的是mysql实现的,后面业务增长了,我想换成redis,原来的mvc做这种改动是很麻烦的,但是,services层的存在,就可以很方便的切换, 譬如官方开发的redis cart:https://github.com/fecshop/yii2_fecshop_redis_cart ,services的好处很多,在实际开发的过程中会领略到的

另外block层,是不能直接调用model的,只能调用services层的方法。

多去看代码吧,这些层都是拍脑袋发热想出来的,都是为了解决实际的问题,几句话说不清楚。

多去看代码!!多去看代码!!多去看代码!! 代码会告诉你。

hetao#55年前 0 个赞

明白了

Fecmall#65年前 0 个赞

@hetao #5楼 重新整理了一下,你回头重新看一下吧。

多去看源码和文档,带上自己的思考

hetao#75年前 0 个赞

如果是很简单的功能,只写Service不写block是否也可以,直接从Service中取数据

Fecmall#85年前 0 个赞

@hetao #3楼 不是mvvm, 本来放到controller里面的代码,放到了block层,好处:

1.避免controller文件过大

2.fecshop小部件,需要使用block,也就是独立块,详细参看:http://www.fecshop.com/doc/fecshop-guide/instructions/cn-1.0/guide-fecshop_widget.html

fecshop小部件,生产出来,在其他的页面可以方便的引入调用,譬如:头部,尾部,菜单部分等。

Fecmall#95年前 0 个赞

@hetao [#7楼](#comment7) 可以的,分层是为了方便解决问题。

1.眼前的问题,

2.将来业务做起来后的问题。

3.自己的问题,

4.团队协作的问题

等等

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics