咨询下!
发布于:2022-01-17 09:50:54
#1 water6000
通常我们把业务逻辑写到Controller中,而Model只负责和数据库打交道。但是随着业务越来越复杂,controller越来越臃肿,举一个简单的例子,比如说用户下订单,这必然会有一系列的操作:更新购物车、添加订单记录、会员添加积分等等,且下订单的过程可能在多种场景出现,如果这样的代码放controller中则很臃肿难以复用,如果放model会让持久层和业务层耦合。
请问。speedphp该如何处理呢?头一次用sp,感觉真的不错!:lol
2014-10-31 08:43:20
#2 jake
一般的建议是:复用的业务逻辑都放Model里面。
如果想避免“持久层和业务层耦合”,有两个方式:
1. Controller -> Model Class -> Model extendsspModel 也就是Model分开两类Class,一类是对接业务的,另一类是对接数据库的。这样就不“耦合”了。
2. Controller -> Model CLass -> spDB() 在业务逻辑Model内直接用spDB来对接数据库。
2014-10-31 09:55:38
#3 water6000
能举个例子呼?要是都放到控制端不知道可行否,不是说可以把control分成如干个control吗?:lol
2014-10-31 10:39:37
#4 jake
其实代码放哪儿都行,不过你的提问是说“会复用”的代码,一般复用代码最好是放Model层。控制器可以有多个,但是控制器的代码大部分是一次性的。
2014-10-31 10:57:01
#5 water6000
分写控制端,不知道有例子吗?1)个方法没看明白,可否举个伪代码?另外,不知道,这么好的框架,是否还在维护和进行新的开发吗?
2014-10-31 11:06:48
#6 jake
1. 分开写控制器,就是建多几个控制器文件,参考入门教程
2. 第一个方法,大概是这样,假设有个Model是购物车Cart.php,然后对应数据库是cart。那么你要分开写,那么可以是
Cart.php
class Cart{
// 这里很多逻辑很多逻辑
// 这里的方法会使用lib_cart来访问数据库
}
lib_cart.php
class lib_cart extends spModel {
// 这里是数据库方法
}
也就是业务Model类不继承spModel,专门写全部的业务逻辑,里面调用数据库MOdel。
数据库的MOdel才继承spModel
这样不就分层了嘛
3. 框架有跟进。只是在稳定阶段,没必要乱更新博眼球。
{:soso_e173:}
2014-10-31 11:52:08
#7 water6000
太感谢了!研究过好多框架,发现,你的这个框架好像是最容易学的那种,就是比较担心会不再更新了!moonphp,fleaphp都已经倒下了!你的这个框架好像和他们应该是同时代的,能坚持下来真的很不容易。:lol
2014-10-31 12:49:19
#8 water6000
还有就是问下,用sp做大型的应用,不知道效率如何?在同等条件下的硬件水平下!
2014-10-31 12:52:06
#9 water6000
突然又想起一个问题,就是用spUrl生成的地址好像对seo不怎么友好吧,不知道可否生成这样的链接字符串形式/post/hello/1这样的形式。
2014-10-31 12:58:59
#10 jake
会更好,因为sp是简化了很多的分层。比如说数据驱动层和抽象层是一起的,比起其他框架复杂度低很多,也就是能支持更高的负载。
另外可以看看手册里面关于优化加速相关章节。
2014-10-31 13:36:17
#11 jake
看看手册关于“URLRewrite伪静态”
2014-10-31 13:36:52