我想问下大家代码平时是怎么拆分的。比如一个表单,传递给控制器,控制器执行保存、修改,表单需要进行逻辑判断。一般大家是怎么拆分的。以下是我知道的几个方法:1.全部写控制器,一条线写完;2.一个控制器调用一个model方法,model调用多个其它方法得到最后结果,最终返回给控制器3.一个控制器根据业务流程,一个步骤调用一次model方法,最终完成。那种方法合适
3 回答

蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
举个例子,具体的业务逻辑肯定更复杂;
class Response {
public static function send($data) {
echo json_encode($data);
}
}
class Request {
public static function post($key = null) {
return isset($_POST[$key]) ? $_POST[$key] : $_POST;
}
}
class Controller {
public function create() {
$data = Request::post();
$result = (new Model())->create($data);
Response::send($request);
}
}
class Model {
public function create($data) {
// 开启事务
try {
(new CommentModel())->create($data['member_id'],$data['content']); // 保存评论
(new IntegralModel())->update($data['member_id'],5); // 更新积分
// 提交事务
} catch(Exception $e) {
// 事务回滚
}
}
}
class CommentModel {
public function create($member_id,$content) {
throw new Exception('保存失败');
}
}
class IntegralModel {
public function update($member_id,$integral) {}
}
主要想表达一个什么意思呢?程序逻辑尽量清晰,每个方法该干什么就尽量把职责进行区分,不要放到一起,代码又长又臭。
而且,不同的业务逻辑还会运用到设计模式。

守着星空守着你
TA贡献1799条经验 获得超8个赞
所以,这就是为什么大家现在用的框架不仅仅只是个MVC了,慢慢的使用了cache层,service层,依赖注入等等理念来解决问题,JS的趋势也从MVC走向了MVVM。

一只甜甜圈
TA贡献1836条经验 获得超5个赞
MVC的整体设计方案。我个人在实际开发的过程中是在controller和model层之间增加了一个service层,主要做业务逻辑代码。
1.在controller写model的操作绝对是不合适的。
2.model封装一些简单的数据操作。
3.在service写业务逻辑代码,controller层调用service,service层的代码复用率就会变高。
4.整体解耦,有利于代码的整洁和维护。
5.model层可以做一些数据表相关的其他封装。
当然你可以有其他的结构思路,这边我只是提供了自己的理解。
- 3 回答
- 0 关注
- 394 浏览
添加回答
举报
0/150
提交
取消